숨겨진 계층 구조

파일 경로로 디렉터리 트리를 만들고, 전체 크기가 t 이상인 디렉터리를 모두 포함하면서 출력하는 디렉터리 수가 최소가 되도록 펼침과 접힘을 정해 출력한다.

보통6트리해시맵DFS그리디면접 대비아직 제출이 없습니다시간 제한1초메모리 제한512 MB

문제

텍스트 기반 파일 탐색기의 사용자 인터페이스를 만들고 있다. 맡은 일 중 하나는 디렉터리 계층 구조를 보여 주는 탐색 창을 만드는 것이다. 파일 시스템은 디렉터리로 이루어지고, 디렉터리는 파일과 다른 디렉터리를 담는다. 그 안의 디렉터리가 다시 파일과 디렉터리를 담는 식으로 이어지므로, 디렉터리는 계층적인 트리 구조를 이룬다. 계층에서 가장 위에 있는 디렉터리를 루트 디렉터리라고 부른다. 디렉터리 dd가 디렉터리 ee를 직접 담고 있으면 ddee의 부모 디렉터리이고 eedd의 하위 디렉터리이다. 파일에는 바이트 단위의 크기가 있다. 디렉터리의 크기는 그 디렉터리 안에 직접 또는 간접적으로 들어 있는 모든 파일의 크기를 더한 값이다.

루트 디렉터리를 뺀 모든 파일과 디렉터리에는 이름이 있다. 이름은 항상 소문자 알파벳으로 시작하고, 소문자 알파벳과 마침표(.)로만 이루어진 문자열이다. 같은 부모 디렉터리 바로 아래에 있는 항목(파일과 디렉터리)의 이름은 서로 달라야 한다. 모든 항목은 다음 규칙으로 만드는 경로로 유일하게 나타낼 수 있다.

  • 루트 디렉터리의 경로는 슬래시 하나, 즉 "/"이다.
  • 디렉터리 dd의 경로는 루트 디렉터리에서 dd까지 계층을 따라 내려가며 만나는 디렉터리 이름을 위에서 아래로 이어 붙이고, 이름마다 앞에 "/"를 붙인 다음 맨 끝에 "/"를 하나 더 붙여서 만든다.
  • 파일 ff의 경로는 부모 디렉터리의 경로 뒤에 ff의 이름을 이어 붙인 것이다.

계층 구조는 루트 디렉터리를 출력해서 보여 준다. 디렉터리 dd를 출력한다는 것은 "mdm_d pdp_d sds_d" 꼴의 줄 하나를 쓴다는 뜻이다. 여기서 pdp_dsds_d는 각각 dd의 경로와 크기이고, mdm_d는 아래에서 설명하는 펼침 표시이다. dd가 하위 디렉터리를 담고 있으면 dd를 접을지 펼칠지 골라야 한다. 펼치기를 고르면 dd의 하위 디렉터리를 모두 이름의 사전순으로, 같은 규칙에 따라 출력한다. 접기를 고르면 dd의 내용은 그냥 무시한다.

펼침 표시 mdm_ddd에 하위 디렉터리가 하나도 없으면 공백 문자 하나, dd를 접기로 골랐으면 "+", 펼치기로 골랐으면 "-"이다.

파일 목록과 임곗값 정수 tt가 주어진다. 크기가 tt 이상인 디렉터리가 빠짐없이 출력되게 하면서, 출력하는 디렉터리의 총 개수는 가장 적게 만들어 계층 구조를 보여라. 빈 디렉터리는 없다고 가정하므로 주어진 파일 경로만으로 계층 구조 전체를 알아낼 수 있다. 루트 디렉터리는 크기와 상관없이 반드시 출력한다. 크기가 tt 이상인 디렉터리는 출력하기만 하면 되고 반드시 펼쳐야 하는 것은 아니다.

입력

첫째 줄에 파일의 개수 nn (1n10001 \le n \le 1000)이 주어진다. 다음 nn개 줄에는 파일 하나의 경로 ff와 크기 ss (1s1061 \le s \le 10^6)가 공백을 사이에 두고 주어진다. 경로의 길이는 100자 이하이고, 위 규칙을 따르는 올바른 파일 경로이다. 모든 경로는 서로 다르다.

그다음 줄에 임곗값 디렉터리 크기 tt (1t1091 \le t \le 10^9)가 주어진다.

출력

주어진 임곗값에 대해 위에서 설명한, 출력하는 디렉터리 개수가 가장 적은 계층 구조 표시를 출력한다. 각 줄은 펼침 표시, 공백 한 칸, 경로, 공백 한 칸, 크기 순서로 쓴다.