문제
왼쪽 또는 오른쪽으로만 빠져나갈 수 있는 원통형 파이프 안에 숫자가 쓰인 공이 일렬로 들어있다.
명령에 따라 공을 하나씩 뺄 때, 공이 빠져나오는 숫서를 구하려고 한다.
양방향 중 한 방향으로 공을 하나씩 뺄 수 있기 때문에, 명령받은 공이 다른 공 사이에 있어
바로 빠져나오지 못하는 경우도 있다. 양쪽 끝에 있는 두 개의 공만 명령에 따라 바로
뺄 수 있다. 명령을 받았지만 바로 뺄 수 없는 공은 보류 상태가 되며, 뺄 수 있는 조건이 되면
다음 명령보다 우선하여 빠져나오게 된다.
아래 그림은 파이프 안에 들어있는 공의 순서를 나타낸다.
가장 왼쪽 공은 왼쪽으로 가장 오른쪽 공은 오른쪽으로 꺼낼 수 있다.
<- 1 2 3 4 5 6 ->
명령이 [6, 2, 5, 1, 4, 3]으로 주어진 경우, 다음과 같이 공이 빠져나오게 된다.
1. 6번 공은 오른쪽 끝에 있으므로 바로 빠져나온다.
<- 1 2 3 4 5 ->
2. 2번 공은 다른 공 사이에 있기 때문에 바로 나가지 못하고 보류 상태가 된다.
3. 5번 공은 6번 공이 빠져나갔기 때문에 오른쪽 끝에 있으므로 바로 빠져나온다.
<- 1 2 3 4 ->
4. 1번 공은 왼쪽 끝에 있으므로 바로 빠져나온다. <- 2 3 4 ->
보류 상태였던 2번 공이 이제 빠져나올 수 있기 때문에 뒤이어 2번 공이 빠져나온다.
<- 3 4 ->
5. 4번 공은 오른쪽 끝에 있으므로 바로 빠져 나온다.
<- 3 ->
6. 3번 공은 마지막 공이기 때문에 어느 쪽으로든 나올 수 있다.
<- ->
공이 빠져나온 순서는 [6, 5, 1, 2, 4, 3]이다.
파이프에 들어있는 공의 번호를 나타내는 배열 ball과
공을 빼는 명령을 담은 배열 order가 주어질 때,
공이 빠져나오는 순서를 구하는 프로그램을 완성하시오.
입력
첫행에 볼의 수 N이 주어진다. ( 1 <= N <= 300,000)
다음 행에 N개의 볼번호 bi가 공백을 구분하여 주어진다.
다음 행에 N개의 명령번호 ci가 공백을 구분하여 주어진다.
같은 볼번호는 주어지지 않으며 볼번호와 명령번호는 일대일 대응한다.
즉, 볼번호가 있다면 명령번호도 반드시 존재한다.
( 1 <= bi, ci <= 1,000,000)
출력
명령번호에 맞게 볼을 꺼낼 때, 빠져나오는 공의 순서를 구하여
하나의 행에 공백으로 구분하여 출력한다.
예제 #1
6
1 2 3 4 5 6
6 5 2 1 4 3
6 5 1 2 4 3
예제 #2
5
11 2 9 13 24
9 2 13 24 11
24 13 9 2 11