60041 지그재그 Diamond V
문제
길이가 인 수열 이 주어진다. 이 수열에는 부터 까지의 정수가 모두 정확히 한 번씩 등장한다.
의 부분수열이란, 수열 에서 0개 이상의 원소를 제거해서 만든 수열을 뜻한다. 세 정수 (, )가 주어졌을 때, 다음 조건들을 만족하는 의 부분수열이 가질 수 있는 최대 길이를 라 하자.
- 부분수열에 들어간 원소들은 원래 위치가 구간에 있어야 한다. 다시 말해, 의 원소들로만 부분수열을 구성할 수 있다.
- 부분수열의 모든 원소의 값은 이하여야 한다.
- 부분수열은 지그재그 수열이어야 한다. 길이 인 수열 가 지그재그 수열 이라는 것은, 각 ()에 대해 이라면 가, 이라면 가 성립하는 것으로 정의한다. 구체적으로, 길이가 2 이하인 수열은 모두 지그재그 수열이다.
길이가 0인 빈 수열은 위 세 조건을 모두 만족하기 때문에, 항상 임에 유의하라.
를 만족하는 모든 정수 에 대해 를 모두 합한 값을 로 정의하자. 의 값을 모두 구하는 프로그램을 작성하여라.
입력
첫 번째 줄에 이 주어진다.
두 번째 줄에 이 공백을 사이에 두고 주어진다.
출력
개의 줄을 출력하라. 이 중 ()번째 줄에는 의 값을 출력하라.
제한
- 주어지는 모든 수는 정수이다.
- 모든 ()에 대해, .
- 모든 ()에 대해, .
서브태스크
| 번호 | 배점 | 제한 |
|---|---|---|
| 1 | 10 | . |
| 2 | 13 | . |
| 3 | 17 | . |
| 4 | 22 | . |
| 5 | 38 | 추가 제약 조건 없음. |
예제 입출력
예제 입력 1
3
1 2 3
예제 출력 1
3
7
9
예제 입력 2
6
3 1 4 6 5 2
예제 출력 2
10
16
22
34
40
46
출처
올림피아드 › 한국정보올림피아드 › KOI 2023 2차 › 중등부 4번 › 고등부 2번
solution.cpp
에디터 불러오는 중...