만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

인접 곱 게임

시간 제한1초메모리 제한64 MB

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

보통10점 중 7점

유형
동적 계획법, 그리디
정답자
아직 제출이 없습니다

문제

미르코가 아주 긴 종이에 수 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이 주어진다. (3≤N≤300003 \le N \le 30000)

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

출력

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

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

예제3

  1. 예제 1

    입력
    3
    8.52
    1.00
    9.61
    
    예상 출력
    81.8772
    
  2. 예제 2

    입력
    5
    1.00
    2.00
    3.00
    4.00
    5.00
    
    예상 출력
    40.0000
    
  3. 예제 3

    입력
    3
    -1.25
    10.00
    -1.00
    
    예상 출력
    1.2500