열차 합치기

면접 대비

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

요약
두 열차의 앞차를 하나씩 골라 새로운 열차를 만들 때, 주어진 목표 순서를 만들 수 있는지 판정한다. 한쪽이 비면 나머지는 순서대로 이어진다.
난이도

보통10점 중 5점

유형
동적 계획법, 투 포인터, 배열, 구현
정답자
아직 제출이 없습니다

문제

조차장(操車場)은 화차를 보관·분류하거나 싣고 내리기 위한 복잡한 선로들의 집합입니다. 이 문제에서 다루는 선로는 훨씬 단순하며, 두 열차를 하나로 합치는 것에만 관심이 있습니다.

두 열차는 각각 여러 대의 화차로 이루어져 있습니다. 각 화차에는 1 이상 1,000,000 이하의 양의 정수로 구분되는 한 종류의 제품이 실려 있습니다. 두 열차는 서로 다른 선로를 따라 오른쪽에서 들어옵니다. 두 열차를 합치기 위해, 매 단계마다 두 열차 중 하나의 맨 앞 화차를 골라 왼쪽에서 만들어지고 있는 새 열차의 맨 뒤에 붙일 수 있습니다. 한 열차의 화차를 모두 옮기고 나면, 남은 다른 열차의 화차들을 하나씩 순서대로 왼쪽으로 옮깁니다. 결국 모든 화차는 왼쪽으로 옮겨져야 합니다.

매 단계에서 어느 열차를 고르는지에 따라 완성되는 출발 열차의 배열이 달라집니다. 예를 들어 첫 번째 열차의 화차를 모두 옮길 때까지 그 열차만 계속 고르면 1, 1, 1, 2, 2, 2 순서를 얻을 수 있고, 두 열차에서 화차를 번갈아 고르면 2, 1, 2, 1, 2, 1 순서를 얻을 수도 있습니다.

조차장 감독관은 출발 열차가 가져야 할 제품 순서를 하나 지정받았습니다. 두 열차가 들어오는 순서(각 열차 화차의 배열)가 주어질 때, 원하는 순서를 만들어 낼 수 있는지 판단하세요.

입력

입력은 여러 개의 테스트 케이스로 이루어집니다.

각 케이스의 첫 번째 줄에는 두 양의 정수 N1N_1, N2N_2가 주어지며, 각각 두 열차에 있는 화차의 수입니다. 각 열차의 화차 수는 1 이상 1000 이하입니다.

두 번째 줄에는 첫 번째 열차에 실린 제품을 나타내는 N1N_1개의 양의 정수(최대 1,000,000)가 열차의 맨 앞에서 맨 뒤 순서로 주어집니다.

세 번째 줄에는 두 번째 열차에 실린 제품을 나타내는 N2N_2개의 양의 정수가 같은 형식으로 주어집니다.

네 번째 줄에는 출발 열차가 가져야 할 순서를 나타내는 N1+N2N_1+N_2개의 양의 정수가 같은 형식으로 주어집니다.

N1=N2=0N_1 = N_2 = 0인 줄이 입력의 끝을 나타냅니다.

출력

각 케이스마다, 원하는 순서를 만들 수 있으면 possible을, 만들 수 없으면 not possible을 한 줄에 출력하세요.

예제2

  1. 예제 1

    입력
    3 3
    1 2 1
    2 1 1
    1 2 1 1 2 1
    3 3
    1 2 1
    2 1 2
    1 1 1 2 2 2
    0 0
    
    예상 출력
    possible
    not possible
    
  2. 예제 2

    입력
    2 2
    5 7
    5 7
    5 5 7 7
    2 2
    1 2
    2 1
    1 1 2 2
    0 0
    
    예상 출력
    possible
    not possible