벤이 카드를 살펴본 순서가 주어지면 그 순서대로 최적 탐색이 진행되는 감소 삼중항 없는 덱 가운데 사전 순으로 가장 큰 덱을 복원합니다.
어려움9게임 이론그리디시뮬레이션조합론아직 제출이 없습니다시간 제한60초메모리 제한512 MB에이미는 값이 1부터 N까지 하나씩 적힌 카드 N장을 한 줄로 놓는다. 이때 값의 수열에 길이 3인 감소 부분수열이 생기지 않도록 놓는다. 예를 들어 1, 5, 4, 6, 3, 2로 놓는 것은 5, 3, 2가 감소 부분수열이므로 규칙에 어긋난다.
에이미는 이 카드 더미를 벤에게 준다. 벤은 길이 3인 감소 부분수열이 없다는 사실은 알지만 정확한 배열은 모른다. 벤은 값이 1인 카드를 찾으려 한다. 카드를 하나 골라 값을 확인하고, 값이 1인 카드를 찾을 때까지 이 과정을 되풀이한다. 매 단계에서 벤은 지금까지 확인한 값과 어긋나지 않는 배열을 모두 따진 뒤, 앞으로 확인해야 하는 카드 수의 최댓값이 가장 작아지는 카드를 고른다.
벤은 운이 나빠서 값이 1인 카드를 찾기까지 카드 N장을 모두 확인했다고 한다. 벤이 카드를 확인한 순서가 주어질 때 각 카드의 값을 구하라. 가능한 배열이 여러 개면 사전순으로 가장 큰 것을 고른다.
배열 A가 배열 B보다 사전순으로 크다는 것은, 두 배열이 처음으로 달라지는 자리에서 A의 값이 B의 값보다 크다는 뜻이다.
첫 줄에 테스트 케이스 수 T가 주어진다. 각 테스트 케이스의 첫 줄에는 카드 수 N이 주어진다. 다음 줄에는 벤이 카드를 확인한 순서를 나타내는 정수 N개가 공백 하나로 구분되어 주어진다. i번째 정수는 벤이 i번째로 확인한 카드의 위치이고, 위치는 1부터 센다.
각 테스트 케이스마다 "Case #x: y" 형식으로 한 줄씩 출력한다. x는 1부터 시작하는 테스트 케이스 번호이고, y는 첫째 카드부터 N째 카드까지의 값을 공백 하나로 구분해 나열한 것이다.