시간 제한메모리 제한제출정답맞힌 사람정답 비율
4 초 512 MB6851749924.505%

문제

가희는 jo_test 폴더에 들어와 있습니다. jo_test 폴더에는 일반 파일이 N개 있습니다.

각각의 파일에는 권한이 있습니다. 권한이란 어떤 유저가 특정한 일을 수행할 수 있는지를 나타내며, 3개의 숫자로 구성됩니다.

숫자 권한
0 아무것도 할 수 없음
1 실행 권한이 있음
2 수정 권한이 있음
3 실행 권한과 수정 권한이 있음
4 읽기 권한이 있음
5 읽기와 실행 권한이 있음
6 읽기와 수정 권한이 있음
7 읽기와 실행, 수정 권한이 있음 

[표 1] 숫자와 해당되는 권한

3개의 숫자 중 1번째 숫자는, 파일을 소유하고 있는 유저가 어떤 권한을 가지고 있는지를 나타냅니다. 2번째 숫자는, 파일을 소유하고 있는 그룹이 어떤 권한을 가지고 있는지를 나타냅니다. 3번째 숫자는, 파일을 소유하고 있는 그룹에 속하지 않고, 파일을 소유하고 있는 유저가 아닌 경우 어떤 권한을 가지고 있는지를 나타냅니다.

예를 들어 파일 train_mugunghwa의 권한이 750이고 이 파일을 소유하고 있는 유저가 cho, 소유하고 있는 그룹이 gahui라고 하겠습니다. 그리고, 그룹 gahui에 속한 유저가 cho1, cho2라고 하겠습니다. 이때, 유저 chotrain_mugunghwa에 대해서 읽기, 실행, 수정 권한이 있습니다. 유저 cho2는 파일 train_mugunghwa를 가지고 있는 그룹에 속하므로 train_mugunghwa에 대해서 읽기와 실행 권한이 있습니다. 마지막으로 유저 gahui는 유저 cho가 아니고, 해당 파일을 소유하고 있는 그룹인 gahui에도 속하지 않으므로 이 파일에 대해서 아무것도 할 수 없습니다.

유저와 그룹, 폴더 jo_test안에 있는 파일에 대한 정보가 주어집니다. 유저가 jo_test안에 있는 파일에 대해서 읽기, 수정, 실행을 시키려고 할 때 성공하는지 실패하는지에 대한 정보를 출력해 주세요.

입력

첫 줄에 유저에 대한 정보 개수 Ujo_test폴더 안에 있는 파일에 대한 정보 개수 F가 공백으로 구분되어 주어집니다.

다음 U개의 줄에는 유저에 대한 정보가 주어집니다. 유저에 대한 정보는 아래 형식들 중 하나로 주어집니다.

  • USER_NAME
    • 유저 USER_NAME이 있다. 유저 USER_NAME이 속한 그룹에 대한 정보는 없다.
  • USER_NAME USER_GROUPS
    • 유저 USER_NAME이 속한 그룹에 대한 정보는 USER_GROUPS에 있다.

유저가 속한 그룹이 여러 개라면 ',' (콤마)로 구분되어 주어집니다. 또한 USER_NAME은 자동으로 그룹 이름이 USER_NAME인 그룹에 속합니다. 유저가 속한 그룹들에 대한 정보에 USER_NAME이 주어지지 않더라도 그룹 이름이 USER_NAME인 그룹에 속함에 주의하세요.

다음 F개의 줄에는 파일에 대한 정보가 아래 형식으로 주어집니다.

  • FILE_NAME FILE_PERMISSION OWNER OWNED_GROUP

이 정보는 파일 이름이 FILE_NAME인 파일 권한이 FILE_PERMISSION이고, 소유자가 OWNER, 소유 그룹이 OWNED_GROUP임을 의미합니다. 이때, 파일 FILE_NAME에 대해 각 유저들이 가지는 권한 이름은 아래와 같습니다.

유저 권한
OWNER OWNER
OWNER는 아니지만, OWNER_GROUP에 속한 유저 GROUP
OWNER도 아니고, OWNER_GROUP에 속하지도 않는 유저 OTHER

[표 2] 유저가 이름이 FILE_NAME인 파일에 대해 가지는 권한

그 다음 줄에 질문의 개수 Q가 주어집니다.

다음 Q개의 줄에는 USER_NAMEFILE_NAMEOPERATION이 공백으로 구분되어 주어집니다. OPERATION은 문자 'R', 'W', 'X' 중 하나로 주어지며, 각각의 의미는 읽기, 수정, 실행을 의미합니다. 또한 입력의 의미는 유저 USER_NAME이 파일 FILE_NAME에 연산 OPERATION을 수행하려고 하는지 나타냅니다.

출력

Q개의 질문에 대해, 연산이 성공하면 1을 실패하면 0을 출력해 주세요. 각 질문에 대한 답은 한 줄에 하나씩 출력해 주세요.

제한

  • U, F, Q는 1이상 5×105 이하의 정수입니다.
  • 유저 이름과 그룹의 이름, jo_test에 있는 파일은 대문자, 소문자, 숫자로만 주어지며, 길이는 1이상 10이하입니다.
  • 유저가 속한 그룹에 대한 정보 USER_GROUPS에는 많아야 10개의 그룹이 있습니다. 이 그룹들은 이름이 중복되지 않습니다.
  • U개의 그룹 정보에 나오는 그룹 개수의 총합은 105를 넘어가지 않습니다.
  • 파일에 대한 정보가 주어질 때
    • jo_test에 있는 파일이 주어집니다.
    • 존재하는 유저와 그룹만이 주어집니다.
    • OWNER권한을 가진 유저는 GROUP권한을 가진 유저들이 할 수 있는 모든 연산을, GROUP권한을 가진 유저는 OTHER권한을 가진 유저들이 할 수 있는 모든 연산을 할 수 있습니다.
    • 파일에 대해 수정 권한이 있다면, 읽기 권한도 있습니다.
  • 파일들의 이름은 중복되지 않습니다.
  • 질문이 주어질 때 jo_test에 있는 파일만 주어지며, 존재하는 유저만 주어집니다.
  • 파일 이름과 유저 이름은 중복되지 않습니다.

예제 입력 1

3 2
cho
gahui alpa
mysql
namahage 754 cho alpa
dochida 644 cho cho
3
cho namahage X
gahui namahage W
mysql namahage X

예제 출력 1

1
0
0

유저 세 명에 대한 권한은 표 2와 같습니다.

  cho gahui mysql
namahage RWX RX R
dochida RW R R

[표 3] 유저 cho, gahui, mysql의 권한

예제 입력 2

2 2
OPPA IS,HATE,HOSPITAL
IHATE JYUSAGI
DONGMUL 755 OPPA JYUSAGI
maruchise 754 OPPA JYUSAGI
2
OPPA DONGMUL X
IHATE maruchise X

예제 출력 2

1
1

유저 두 명에 대한 권한은 표 3과 같습니다.

  OPPA IHATE
DONGMUL RWX RX
maruchise RWX RX

[표 4] 유저 OPPA, IHATE의 권한