길이가 N인 수열 A1,A2,…,AN이 주어진다. 이 수열에는 1부터 N까지의 정수가 모두 정확히 한 번씩 등장한다.
A의 부분수열이란, 수열 A에서 0개 이상의 원소를 제거해서 만든 수열을 뜻한다. 세 정수 x,y,z (1≤x,y,z≤N, y≤z)가 주어졌을 때, 다음 조건들을 만족하는 A 의 부분수열이 가질 수 있는 최대 길이를 f(x,y,z) 라 하자.
- 부분수열에 들어간 원소들은 원래 위치가 [y,z] 구간에 있어야 한다. 다시 말해, Ay,Ay+1,…,Az 의 원소들로만 부분수열을 구성할 수 있다.
- 부분수열의 모든 원소의 값은 x 이하여야 한다.
- 부분수열은 지그재그 수열이어야 한다. 길이 K 인 수열 S1,…,SK 가 지그재그 수열 이라는 것은, 각 i (1≤i≤K−2)에 대해 Si<Si+1이라면 Si+1>Si+2가, Si>Si+1이라면 Si+1<Si+2가 성립하는 것으로 정의한다. 구체적으로, 길이가 2 이하인 수열은 모두 지그재그 수열이다.
길이가 0인 빈 수열은 위 세 조건을 모두 만족하기 때문에, 항상 f(x,y,z)≥0 임에 유의하라.
1≤y≤z≤N를 만족하는 모든 정수 y,z에 대해 f(x,y,z)를 모두 합한 값을 g(x)로 정의하자. g(1),g(2),…,g(N) 의 값을 모두 구하는 프로그램을 작성하여라.
Limit
- 주어지는 모든 수는 정수이다.
- 2≤N≤200000
- 모든 i (1≤i≤N)에 대해, 1≤Ai≤N.
- 모든 i,j (1≤i<j≤N)에 대해, Ai=Aj.
Subtask
| 번호 | 배점 | 제한 |
|---|
| 1 | 10 | N≤15. |
| 2 | 13 | N≤100. |
| 3 | 17 | N≤500. |
| 4 | 22 | N≤5000. |
| 5 | 38 | 추가 제약 조건 없음. |
채점 및 기타 정보