페이지가 로드되지 않나요? 여기를 눌러보면 고쳐질 수도 있어요.
Placeholder

#4028

제3회 디미고 프로그래밍 챌린지 오픈 콘테스트

지그재그수열 1초 1024MB

문제

원소가 모두 다른 수열 A=(a_1,⋯,a_N)에 대해, 수열 A의 점수는 아래와 같이 정의한다.

  • i=1,2,⋯,N−1에 대해 a_i<a_{i+1}이면 −를 쓰고, a_i>a_{i+1}이면 +를 종이에 써 길이 N−1의 문자열을 만든다.

  • 점수는 만든 문자열에서 같은 기호가 연속되는 구간으로 나눈 뒤, 각 구간의 길이를 제곱해 모두 더한 값으로 정의한다. 즉, 연속된 + 구간과 연속된 − 구간을 각각 하나의 구간으로 보고, 그 길이를 제곱하여 합한 값이다.

예를 들어, A=(7,8,1,3,6,4,2,9)와 같은 경우에는 종이에 쓴 문자열은 +−++−−+이며 여기서 같은 기호가 연속된 구간은 +, −, ++, −−, + 이므로 길이의 제곱의 합인 1^2+1^2+2^2+2^2+1^2=11이 수열 A의 점수다.

순열 A=(a_1,⋯,a_N)에 대한 점수는 A의 모든 부분 수열의 점수 중 최댓값으로 정의한다.

길이 N인 순열이 주어질 때, 순열의 점수를 구해보자.


입력

첫 번째 줄에 순열 A의 길이를 나타내는 N이 주어진다. (1≤N≤3,000)

두 번째 줄에 순열 A의 원소 a_1,a_2,⋯,a_N이 공백으로 구분하여 주어진다. (1≤a_i≤N,\ i≠j⇒a_i≠a_j)


출력

첫 번째 줄에 순열 A의 점수를 출력한다.


예제

5
1 3 5 4 2
8

길이가 N인 순열이란 순열의 원소로 1부터 N까지의 정수가 모두 빠짐없이 단 한 번씩 나오는 수열을 의미한다. 즉, 순열 A=(A_1,A_2,⋯,A_N)는 아래 조건을 만족한다.

  • A_i1 이상 N 이하의 정수

  • i≠j이면 A_i≠A_j

어떤 수열에서 0개 이상의 원소를 삭제해서 얻을 수 있는 수열을 그 수열의 부분 수열이라 한다.

로그인해야 코드를 작성할 수 있어요.