인접 곱 게임

주어진 수들 중 일부를 골라 부분수열을 만들 때, 인접한 두 수의 곱의 합이 최대가 되도록 하는 값을 구한다.

보통7동적 계획법그리디아직 제출이 없습니다시간 제한1초메모리 제한64 MB

문제

미르코가 아주 긴 종이에 수 NN개를 적는다. 슬라브코는 연필을 들고 그 수 중 몇 개를 지운다. 지우지 않은 수를 원래 순서대로 새 종이에 옮겨 적고, 새 종이에서 이웃한 두 수의 곱을 모두 더한 값이 슬라브코의 점수가 된다.

예를 들어 옮겨 적은 수열이 3,6,1,23, 6, -1, 2이면 점수는 3×6+6×(1)+(1)×2=103 \times 6 + 6 \times (-1) + (-1) \times 2 = 10이다. 옮겨 적은 수가 두 개보다 적으면 점수는 00이다.

슬라브코는 어느 수를 지워야 점수가 가장 커지는지 모른다. 슬라브코가 얻을 수 있는 최대 점수를 구하는 프로그램을 작성하라. 지우는 개수에는 제한이 없다.

입력

첫째 줄에 미르코가 적은 수의 개수 NN이 주어진다. (3N300003 \le N \le 30000)

다음 NN개의 줄에 미르코의 종이에 적힌 수 XiX_i가 한 줄에 하나씩 주어진다. 각 수는 소수점 아래 둘째 자리까지 정확히 적혀 있고, 필요하면 끝에 00이 붙는다. (10.00Xi10.00-10.00 \le X_i \le 10.00)

출력

슬라브코가 얻을 수 있는 최대 점수를 첫째 줄에 출력한다. 소수점 아래 넷째 자리까지 정확히 출력한다.

모든 XiX_i가 소수점 아래 둘째 자리까지이므로 점수는 항상 0.00010.0001의 배수이다.