MultiMax

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

요약
값이 -1000 이상 1000 이하인 카드 n장 중 2장 또는 3장을 골라 곱이 최대가 되도록 한다.
난이도

보통10점 중 4점

유형
정렬, 그리디, 완전 탐색
정답자
아직 제출이 없습니다

문제

카드가 n장 있고, 각 카드에는 정수가 하나씩 적혀 있다. 같은 정수가 적힌 카드가 여러 장 있을 수도 있다. 이 카드 중에서 두 장 또는 세 장을 골라, 고른 카드에 적힌 수의 곱을 최대로 만들려고 한다.

예를 들어 5, 10, -2, 3, 5, 2가 적힌 카드 6장이 있으면 5와 10과 5를 고를 때 곱이 250이 되어 가장 크다. 10, 0, -5, 2가 적힌 카드 4장이 있으면 10과 2를 고를 때 곱이 20이 되어 가장 크다.

카드 n장에 적힌 수가 주어졌을 때, 두 장 또는 세 장을 골라 얻을 수 있는 곱의 최댓값을 구하는 프로그램을 작성하시오.

입력

첫째 줄에 카드의 개수 n이 주어진다. (3 ≤ n ≤ 10,000)

둘째 줄에 카드에 적힌 정수 n개가 공백으로 구분되어 주어진다. 각 정수는 -1,000 이상 1,000 이하이다.

출력

첫째 줄에 곱의 최댓값을 출력한다.

예제2

  1. 예제 1

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

    입력
    4
    10 0 -5 2
    
    예상 출력
    20