읽음

시간 제한1초메모리 제한1024 MB

요약
각 메시지의 보낸 사람과 읽지 않은 사람 수가 주어졌을 때, 이를 만족하는 읽음 기록이 존재하는지, 존재한다면 유일한지 판정합니다.
난이도

보통10점 중 7점

유형
구현, 시뮬레이션, 그리디, 해시맵
정답자
아직 제출이 없습니다

문제

온라인상의 단체 대화방에서는 여러 사람들이 메시지를 보내고 읽을 수 있다.

단체 대화방의 규칙은 다음과 같다:

  • 메시지는 한 줄에 하나씩 보낸 순서대로 나열된다. 더 먼저 보낸 메시지일수록 더 위에 위치한다.
  • 각각의 사람은 마지막으로 대화방에 접속한 시점에 올라온 모든 메시지를 읽고 그 아래의 메시지들을 아직 읽지 않았다. 모든 메시지를 읽지 않았거나 모든 메시지를 읽었을 수도 있다.
  • 메시지를 보낼 때는 대화방에 접속해야 하므로, 자신의 메시지를 포함하여 그 위의 모든 메시지를 읽게 된다. 한 사람이 여러 개의 메시지를 보내거나 메시지를 한 번도 보내지 않을 수도 있다.

사람들은 자신이 보낸 메시지를 누가 읽었는지 매우 궁금해한다. 하지만 각각의 메시지를 읽은 사람의 목록을 유지하는 일은 매우 비효율적이므로, 단체 대화방에서는 사람들이 보낸 메시지 내용에 덧붙여 그 메시지를 아직까지 읽지 않은 사람의 수를 알려준다.

단체 대화방에서 나열되는 메시지의 형식은 다음과 같다:

[<sender>] <text> (<unread_count>)

  • <sender>는 보낸 사람의 이름이며, 알파벳 대소문자로 이루어져 있다.
  • <text>는 메시지의 본문이며, 알파벳 대소문자, 숫자, 공백 문자로 이루어져 있다. 빈 문자열이거나 공백 문자만으로 이루어져 있지 않다.
  • <unread_count>는 대화방에서 해당 메시지를 아직 읽지 않은 사람의 수이다.

다음은 단체 대화방에 A, B, C 세 사람이 있고 두 개의 메시지가 있는 예시이다.

[A] The meeting starts at 3 (1)
[B] Yes I checked (2)
  • A가 첫 번째 메시지를 보냈으며 읽지 않은 사람 수는 1명이다.
  • B가 두 번째 메시지를 보냈으며 읽지 않은 사람 수는 2명이다.
  • B가 메시지를 보낼 때 A의 메시지를 읽었으므로 유일하게 남은 사람인 C가 A의 메시지를 읽지 않았다.
  • B의 메시지는 2명이 읽지 않았으므로 A와 C 모두 읽지 않았다.

위의 예시는 간단하지만, 매우 많은 사람들이 있는 단체 대화방의 경우 각각의 메시지를 정확히 어떤 사람들이 읽었는지 알기 어렵다. NN명의 사람이 있는 단체 대화방에서 MM개의 메시지 목록이 보낸 순서대로 주어질 때, 단체 대화방에서 제공하는 읽지 않은 사람 수 정보를 만족하는 경우가 존재하는지 알아보자.

입력

첫 번째 줄에 단체 대화방에 속한 사람의 수 NN과 대화 내역의 수 MM이 공백으로 구분되어 주어진다. (1≤N,M≤1,0001 \leq N, M \leq 1\\,000)

다음으로 NN개의 줄에 걸쳐 한 줄에 하나씩 대화방에 속한 사람들의 이름이 주어진다. 사람들의 이름은 모두 서로 다르며, 길이는 11자 이상 2020자 이하이고 알파벳 대소문자만으로 이루어져 있다.

다음으로 MM개의 줄에 걸쳐 한 줄에 하나씩 대화방의 메시지가 주어진다. 메시지의 형식은 위의 설명을 따르며, 모든 메시지의 길이의 합은 1,000,0001\\,000\\,000 이하이다. 보낸 사람의 이름은 위에서 주어진 이름 목록에 있음이 보장되며, 아직 읽지 않은 사람의 수는 00 이상 NN 이하의 정수이다.

출력

주어진 정보를 만족하는 것이 불가능하다면 IMPOSSIBLE을 출력한다.

주어진 정보를 만족하는 경우가 존재하지만 유일하지 않다면 POSSIBLE을 출력한다.

주어진 정보를 만족하는 경우가 유일하다면 UNIQUE를 출력한다.

예제6

  1. 예제 1

    입력
    1 1
    Liar
    [Liar] This statement is false (1)
    
    예상 출력
    IMPOSSIBLE
    
  2. 예제 2

    입력
    3 2
    Aa
    Bb
    Cc
    [Aa] OK (0)
    [Bb] YES (1)
    
    예상 출력
    POSSIBLE
    
  3. 예제 3

    입력
    4 3
    A
    B
    C
    D
    [D] Some Text (1)
    [A] OK (2)
    [B] NO (3)
    
    예상 출력
    UNIQUE
    
  4. 예제 4

    입력
    4 5
    A
    B
    C
    D
    [A] 3 2 1 (0)
    [B] Rock (1)
    [C] Scissor (1)
    [D] Rock (1)
    [C] NO (3)
    
    예상 출력
    UNIQUE
    
  5. 예제 5

    입력
    4 5
    A
    B
    C
    D
    [A] 3 2 1 Go (0)
    [B] Rock (1)
    [C] Paper (1)
    [D] Rock (1)
    [C] YES (3)
    
    예상 출력
    UNIQUE
    
  6. 예제 6

    입력
    4 5
    A
    B
    C
    D
    [A] t eX t (0)
    [B] Te xt (1)
    [C] tEX t (1)
    [D] T exT (2)
    [C] T e X t (2)
    
    예상 출력
    UNIQUE