[BOJ 16207] 직사각형

View as PDF

Submit solution

Points: 3
Time limit: 2.0s
Memory limit: 512M

Problem types
Allowed languages
Assembly, Awk, C, C++, Java, Pascal, Perl, Python, Sed, Text

알렉스는 창고에서 어렸을 때 가지고 놀던 막대 N개를 찾았다. 막대의 길이는 A1, A2, ..., AN이며, 모두 2보다 크거나 같은 자연수이다.

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

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

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

입력 형식

첫째 줄에 막대의 개수 N(1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄에는 막대의 길이 A1, A2, ..., AN이 주어진다. (2 ≤ Ai ≤ 100,000)

출력 형식

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

예제 입력 1

4
5 5 6 6

예제 출력 1

30

예제 입력 2

4
4 5 2 3

예제 출력 2

8

예제 입력 3

4
2 4 6 8

예제 출력 3

0

예제 입력 4

6
5 6 6 3 4 4

예제 출력 4

24

예제 입력 5

9
10 3 4 4 4 5 6 6 6

예제 출력 5

42

예제 입력 6

10
10 10 10 10 10 10 10 10 10 10

예제 출력 6

200

예제 입력 7

4
100000 100000 100000 100000

예제 출력 7

10000000000

Comments

There are no comments at the moment.