부분 수열 뒤집기
시간 제한2초메모리 제한512 MB
길이 N인 배열에서 부분수열 하나를 뒤집은 뒤 얻을 수 있는 가장 긴 비감소 부분수열의 길이를 구한다.
문제
농부 존은 사진을 찍으려고 소 마리를 한 줄로 세우고 있다 (). 줄에서 번째 소의 키는 이다. 존은 키가 증가하는 긴 부분 수열이 줄 안에 있으면 보기 좋은 사진이 된다고 생각한다.
부분 수열은 인덱스 에 있는 원소 를 고른 것이다. 이면 이 부분 수열이 증가한다고 한다.
존은 증가하는 부분 수열이 길어지도록, 처음에 부분 수열 하나를 마음대로 골라 그 원소의 순서를 뒤집을 수 있다.
예를 들어 수열이 다음과 같다고 하자.
1 6 2 3 4 3 5 3 4
아래 표시한 원소를 골라 뒤집으면
1 6 2 3 4 3 5 3 4
^ ^ ^ ^
다음 수열이 된다.
1 4 2 3 4 3 3 5 6
^ ^ ^ ^
뒤집은 부분 수열은 원래 차지하던 인덱스를 그대로 쓰고, 나머지 원소는 바뀌지 않는다.
임의의 부분 수열을 한 번 뒤집을 수 있을 때, 증가하는 부분 수열의 최대 길이를 구하여라.
입력
첫째 줄에 이 주어진다. 다음 개의 줄에 이 한 줄에 하나씩 주어진다. 각 값은 이상 이하의 정수이다.
출력
부분 수열을 최대 한 번 뒤집은 뒤 얻을 수 있는 증가하는 부분 수열의 최대 길이를 출력한다. 뒤집지 않아도 된다.