숨겨진 에이스 (스몰)
시간 제한30초메모리 제한512 MB
값 1을 찾는 최적 최악 탐색 순서와 일치하는 321 회피 순열 중 사전식으로 가장 큰 덱을 복원합니다.
문제
에이미는 부터 까지의 값이 하나씩 적힌 카드 장으로 덱을 만든다. 값의 나열에 길이 인 감소 부분수열이 생기지 않도록 배치한다. 예를 들어 는 가 감소하므로 허용되지 않는다.
에이미는 이 덱을 벤에게 넘긴다. 벤은 덱에 길이 인 감소 부분수열이 없다는 사실은 알지만 정확한 배치는 모른다. 벤은 값이 인 카드를 찾으려 한다. 카드를 하나 골라 뒤집어 값을 확인하고, 값 을 찾을 때까지 이 과정을 반복한다. 매 단계에서 벤은 앞으로 확인해야 하는 카드 수의 최악값이 가장 작아지는 카드를 고른다.
나중에 벤은 운이 나빠서 값 을 찾기까지 카드 장을 모두 확인했다고 말한다. 벤이 카드를 확인한 순서가 주어질 때 각 카드의 값을 구하라. 가능한 덱이 여럿이면 사전순으로 가장 큰 덱을 고른다.
덱 가 덱 보다 사전순으로 크다는 것은, 두 덱이 처음으로 달라지는 위치에서 의 카드 값이 더 크다는 뜻이다.
이고 벤이 확인한 위치가 순서대로 인 경우를 보자(위치는 부터 센다). 카드 값은 이어야 한다. 번 카드의 값이 이었다면 벤은 곧바로 멈췄을 것이다. 번 카드의 값이 였다면, 배치가 일 때 길이 인 감소 부분수열이 되어 불가능하므로 벤은 번 카드가 값 임을 알아냈을 것이다. 두 경우 모두 세 번째 확인은 필요하지 않다. 따라서 번 카드의 값은 이다. 같은 이유로 번 카드의 값도 일 수 없다. 그러므로 카드 값은 이다.
입력
첫 줄에 테스트 케이스 수 가 주어진다. 각 테스트 케이스의 첫 줄에는 덱의 카드 수 이 주어진다. 다음 줄에는 벤이 카드를 확인한 순서를 나타내는 정수 개가 공백 하나로 구분되어 주어진다. 번째 정수는 벤이 번째로 확인한 카드의 위치이며, 위치는 부터 센다.
출력
각 테스트 케이스마다 Case #x: y 형식으로 한 줄씩 출력한다. 는 부터 시작하는 테스트 케이스 번호이고, 는 카드 값을 위치 순서대로 공백 하나로 구분해 나열한 것이다.
제한
- 주어진 확인 순서에 대해, 벤이 카드 장을 모두 확인해야 한다는 조건까지 포함해 문제의 모든 조건을 만족하는 덱이 적어도 하나 존재한다.