비 단조성
시간 제한10초메모리 제한128 MB
1부터 n까지의 순열이 주어질 때, 내림차순으로 시작해 내림과 오름이 번갈아 나타나는 가장 긴 부분수열의 길이를 구한다.
문제
부터 까지 서로 다른 정수 개로 이루어진 길이 의 수열 가 있다. 이 수열의 부분 수열 중에서 다음 조건을 만족하는 가장 긴 수열 의 길이를 구하려고 한다.
즉 의 원소는 앞에서부터 차례대로 '크다, 작다, 크다, 작다'를 번갈아 만족해야 하며, 맨 처음 비교는 반드시 '크다'()여야 한다. 부분 수열이란 원래 수열에서 원소 몇 개를 지우고 남은 수열을 말하며, 남은 원소들의 순서는 그대로 유지된다. 원소가 하나뿐인 수열도 조건을 만족하는 것으로 본다.
가 주어졌을 때 이러한 의 최대 길이를 출력하는 프로그램을 작성하여라.
입력
첫째 줄에 테스트 케이스의 개수 가 주어진다 ().
각 테스트 케이스는 한 줄로 이루어지며, 형식은 다음과 같다.
n A[0] A[1] A[2] ... A[n-1]
은 수열의 길이이고 (), 그 뒤에 수열 의 원소 개가 공백으로 구분되어 주어진다. 는 부터 까지의 정수를 각각 정확히 한 번씩 포함하는 순열이다.
출력
각 테스트 케이스마다 의 최대 길이를 한 줄에 하나씩 출력한다.