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