각 위치의 증가 부분 수열 길이와 감소 부분 수열 길이가 주어지면 이를 만족하는 1부터 N까지 순열 중 사전 순으로 가장 작은 순열을 복원합니다.
보통7백트래킹그리디동적 계획법아직 제출이 없습니다시간 제한5초메모리 제한512 MBX는 1부터 N까지의 수를 한 번씩 나열한 수열이다. X에서 앞뒤 순서를 지키며 몇 개를 골랐을 때 값이 계속 커지면 증가 부분수열, 계속 작아지면 감소 부분수열이라고 한다. 예를 들어 (5,7,8)은 (4,5,3,7,6,2,8,1)의 증가 부분수열이다.
폴 에르되시와 세케레시 죄르지는 길이가 N 이상인 증가 부분수열과 길이가 N 이상인 감소 부분수열 중 적어도 하나가 X에 반드시 있다는 것을 증명했다. 위 수열에는 길이가 4인 감소 부분수열 (5,3,2,1)이 있다.
각 i마다 두 값을 정의한다.
증가 부분수열에서 가장 큰 수는 마지막 원소이므로 Ai는 Xi에서 끝나는 증가 부분수열의 최대 길이와 같다. 감소 부분수열에서 가장 큰 수는 첫 원소이므로 Bi는 Xi에서 시작하는 감소 부분수열의 최대 길이와 같다.
X=(4,5,3,7,6,2,8,1)의 값은 다음과 같다.
| i | Xi | Ai | Bi |
|---|---|---|---|
| 0 | 4 | 1 | 4 |
| 1 | 5 | 2 | 4 |
| 2 | 3 | 1 | 3 |
| 3 | 7 | 3 | 4 |
| 4 | 6 | 3 | 3 |
| 5 | 2 | 1 | 2 |
| 6 | 8 | 4 | 2 |
| 7 | 1 | 1 | 1 |
순서쌍 (Ai,Bi)는 모든 i에서 서로 다르고, 여기서 어떤 i의 Ai나 Bi가 N 이상이라는 결론이 나온다.
A와 B가 주어질 때 X를 복원하라. X는 1부터 N까지의 수를 한 번씩 쓴 수열이어야 하고, 가능한 X가 여럿이면 사전순으로 가장 앞서는 것을 출력한다. 즉 X0을 가능한 한 작게 하고, 그래도 여러 개가 남으면 X1을 가능한 한 작게 하는 식으로 정한다.
첫 줄에 테스트 케이스의 수 T가 주어진다. 각 테스트 케이스는 세 줄로 이루어진다.
첫 줄에 정수 N이 주어진다. 둘째 줄에 A0,A1,…,AN−1이 공백으로 구분되어 주어진다. 셋째 줄에 B0,B1,…,BN−1이 공백으로 구분되어 주어진다.
제한
각 테스트 케이스마다 한 줄에 Case #x: 를 출력하고, 이어서 X0,X1,…,XN−1을 공백으로 구분해 출력한다. x는 1부터 시작하는 테스트 케이스 번호다.