직사각형 만들기

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

요약
최대 16개의 막대 중 일부를 골라 두 쌍의 길이가 같은 네 그룹으로 나눠 만들 수 있는 사각형의 최대 넓이를 구하고, 불가능하면 -1을 출력합니다.
난이도

보통10점 중 6점

유형
비트 연산, 동적 계획법, 완전 탐색, 조합론
정답자
아직 제출이 없습니다

문제

막대 N개가 주어진다. 이 막대들 중 필요한 막대를 골라 이어 붙여 직사각형을 만들려고 한다.

막대는 서로 이어 붙일 수 있지만, 하나의 막대를 쪼갤 수는 없다. 사용하지 않는 막대가 남아도 된다. 직사각형의 마주 보는 두 변은 각각 길이가 같아야 한다.

만들 수 있는 직사각형 중 넓이가 가장 큰 것의 넓이를 구하시오. 어떠한 직사각형도 만들 수 없다면 -1을 출력한다.

입력

첫째 줄에 막대의 개수 N이 주어진다. N은 4 <= N <= 16을 만족하는 자연수이다.

둘째 줄에 막대의 길이가 공백으로 구분되어 주어진다. 각 막대의 길이는 10 이하의 자연수이다.

출력

첫째 줄에 만들 수 있는 직사각형의 최대 넓이를 출력한다. 주어진 막대로 직사각형을 만들 수 없다면 -1을 출력한다.

예제6

  1. 예제 1

    입력
    6
    1 3 3 4 5 7
    
    예상 출력
    15
    
  2. 예제 2

    입력
    6
    9 9 5 6 2 10
    
    예상 출력
    -1
    
  3. 예제 3

    입력
    7
    3 4 7 8 10 2 9
    
    예상 출력
    70
    
  4. 예제 4

    입력
    9
    9 2 7 9 4 9 7 10 3
    
    예상 출력
    224
    
  5. 예제 5

    입력
    16
    9 9 10 7 7 8 7 5 8 6 9 7 7 10 9 6
    
    예상 출력
    961
    
  6. 예제 6

    입력
    13
    2 6 4 10 2 8 1 8 2 1 4 8 10
    
    예상 출력
    272