직사각형

면접 대비

시간 제한2초메모리 제한512 MB

요약
막대마다 최대 한 번 길이를 1 줄일 수 있을 때, 짝을 지어 직사각형의 마주 보는 변으로 쓰면서 넓이 합의 최댓값을 구한다.
난이도

보통10점 중 5점

유형
그리디, 정렬, 구현, 수학
정답자
아직 제출이 없습니다

문제

알렉스는 창고에서 어렸을 때 가지고 놀던 막대 NN개를 찾았다. 막대의 길이는 A1,A2,…,ANA_1, A_2, \ldots, A_N이며, 모두 22보다 크거나 같은 자연수이다.

오늘은 이 막대를 이용해서 직사각형을 만들려고 한다. 각 막대는 최대 한 번 사용할 수 있고, 여러 개의 막대를 이어 붙여 직사각형의 한 변을 만드는 것은 불가능하다. 일부 막대는 직사각형을 만들 때 사용하지 않아도 된다. 직사각형은 하나 이상을 만들어도 된다.

알렉스는 막대의 길이를 11만큼만 줄일 수 있는 기계를 하나 만들었다. 막대의 길이가 AiA_i라면, 막대의 길이를 Ai−1A_i-1로 줄여서 사용할 수 있다. 기계를 사용하는 횟수는 제한이 없지만, 길이를 줄인 막대를 또 줄일 수는 없다.

알렉스는 만든 직사각형의 넓이의 합이 최대가 되게 직사각형을 만들려고 한다. 이 때, 그 넓이를 구하는 프로그램을 작성하시오.

입력

첫째 줄에 막대의 개수 N(1≤N≤10,000)N(1 \le N \le 10{,}000)이 주어진다. 둘째 줄에는 막대의 길이 A1,A2,…,ANA_1, A_2, \ldots, A_N이 주어진다. (2≤Ai≤100,0002 \le A_i \le 100{,}000)

출력

알렉스가 만든 직사각형의 넓이의 합의 최댓값을 출력한다.

예제5

  1. 예제 1

    입력
    4
    5 5 6 6
    
    예상 출력
    30
    
  2. 예제 2

    입력
    4
    4 5 2 3
    
    예상 출력
    8
    
  3. 예제 3

    입력
    4
    2 4 6 8
    
    예상 출력
    0
    
  4. 예제 4

    입력
    6
    5 6 6 3 4 4
    
    예상 출력
    24
    
  5. 예제 5

    입력
    9
    10 3 4 4 4 5 6 6 6
    
    예상 출력
    42