페이지가 로드되지 않나요? 여기를 눌러보면 고쳐질 수도 있어요.
Placeholder

#4621

공 꺼내기 10s 256MB

문제

왼쪽 또는 오른쪽으로만 빠져나갈 수 있는 원통형 파이프 안에 숫자가 쓰인 공이 일렬로 들어있다.

명령에 따라 공을 하나씩 뺄 때, 공이 빠져나오는 숫서를 구하려고 한다.

 

양방향 중 한 방향으로 공을 하나씩 뺄 수 있기 때문에, 명령받은 공이 다른 공 사이에 있어

바로 빠져나오지 못하는 경우도 있다. 양쪽 끝에 있는 두 개의 공만 명령에 따라 바로

뺄 수 있다. 명령을 받았지만 바로 뺄 수 없는 공은 보류 상태가 되며, 뺄 수 있는 조건이 되면

다음 명령보다 우선하여 빠져나오게 된다.

 

아래 그림은 파이프 안에 들어있는 공의 순서를 나타낸다.

가장 왼쪽 공은 왼쪽으로 가장 오른쪽 공은 오른쪽으로 꺼낼 수 있다.

<- 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


출처

LINE2020_2 2번 | dnfka0930
로그인해야 코드를 작성할 수 있어요.