두고 온 인형

시간 제한2초메모리 제한512 MB

요약
각 상점의 재고와 구매 순서가 주어질 때, 상점 번호가 감소하지 않도록 구매를 배정하는 방법이 없음, 하나, 여러 개인지 판정한다.
난이도

보통10점 중 6점

유형
그리디, 배열, 해시맵
정답자
아직 제출이 없습니다

문제

오늘 동생이 온 동네를 돌며 장을 다 봐 주었다. 아끼는 인형 플러피노즈도 내내 데리고 다녔는데, 집에 돌아와 보니 인형이 사라졌다. 동생이 인형에서 손을 놓는 때는 장바구니 목록에 있는 물건을 집을 때뿐이므로, 인형은 실제로 물건을 산 가게 중 한 곳에 남아 있다.

동생은 들른 가게와 방문 순서는 기억하지만 어느 가게에서 무엇을 샀는지는 기억하지 못한다. 아무것도 사지 않고 나온 가게도 있을 수 있다. 대신 물건을 살 때마다 가방에 차곡차곡 쌓았기 때문에 구매 순서만큼은 정확히 기억한다.

동생이 방문한 순서대로 가게에 00번부터 N−1N-1번까지 번호를 붙인다. 가능한 경로란 각 구매를 그 물건을 파는 가게 하나에 대응시키되, 구매 순서대로 읽은 가게 번호가 줄어들지 않도록 한 대응이다. 각 가게가 파는 물건과 구매 순서대로 나열한 물건 목록이 주어질 때, 그런 대응이 하나도 없는지, 정확히 하나인지, 둘 이상인지 판정하라.

입력

첫째 줄에 동네에 있는 가게의 수 NN이 주어진다. (1≤N≤100 0001 \le N \le 100\,000)

둘째 줄에 정수 KK가 주어진다. (N≤K≤100 000N \le K \le 100\,000)

다음 KK개 줄에는 정수 ii (0≤i≤N−10 \le i \le N-1)와 문자열 SS가 공백을 사이에 두고 주어진다. 동생이 ii번째로 들른 가게에서 물건 SS를 판다는 뜻이다. SS는 소문자로만 이루어지고 길이는 1010 이하이다. 모든 가게는 물건을 하나 이상 팔고, 모든 물건은 한 곳 이상의 가게에서 팔며, 한 가게에 같은 물건이 두 번 나오지 않는다.

다음 줄에 동생이 산 물건의 개수 MM이 주어진다. (M≤KM \le K)

다음 MM개 줄에는 산 물건의 이름 TT가 구매한 순서대로 한 줄에 하나씩 주어진다. 산 물건은 모두 서로 다르다.

출력

동생의 설명과 맞는 경로가 없으면 impossible, 정확히 하나이면 unique, 둘 이상이면 ambiguous를 출력한다.

예제3

  1. 예제 1

    입력
    3
    3
    0 chocolate
    1 icecream
    2 cookies
    3
    chocolate
    cookies
    icecream
    
    예상 출력
    impossible
    
  2. 예제 2

    입력
    3
    4
    0 chocolate
    1 icecream
    2 cookies
    2 chocolate
    3
    chocolate
    icecream
    cookies
    
    예상 출력
    unique
    
  3. 예제 3

    입력
    3
    10
    0 tomatoes
    0 cucumber
    1 tomatoes
    2 tomatoes
    2 cucumber
    1 mustard
    0 salt
    2 salad
    2 salt
    2 mustard
    5
    tomatoes
    cucumber
    salad
    mustard
    salt
    
    예상 출력
    ambiguous