사탕

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

요약
N개의 사탕 봉지에서 한 봉지의 개수를 새 양수로 바꿔 부분집합 합으로 만들 수 있는 값의 개수를 최대화하고, 동률이면 P가 가장 작은 것, 그다음 Q가 가장 작은 것을 고르는 문제입니다.
난이도

보통10점 중 6점

유형
동적 계획법, 완전 탐색, 배열
정답자
아직 제출이 없습니다

문제

크리스티안은 사탕을 봉지 단위로 파는 가게를 운영한다. 가게에는 봉지가 NN개 있고, ii번째 봉지에는 사탕이 BiB_i개 들어 있다. 손님이 사탕 KK개를 정확히 달라고 하면, 크리스티안은 사탕 수의 합이 정확히 KK가 되도록 봉지 몇 개를 통째로 골라 건네야 한다. 합이 KK가 되는 봉지 조합이 없으면 그 요청은 들어줄 수 없다.

어떤 양의 정수 KK에 대해 비어 있지 않은 봉지 부분집합의 합이 KK가 될 수 있으면, KK를 제공 가능하다고 하자. 크리스티안이 제시할 수 있는 서로 다른 선택지의 수는 제공 가능한 KK 값의 개수이다.

더 많은 손님을 만족시키기 위해 크리스티안은 봉지 하나를 열어 그 안의 사탕 개수를 바꾸려 한다. 현재 사탕이 PP개 든 봉지를 열었다면, 그 봉지를 원하는 양의 정수 QQ개로 다시 채울 수 있다. 바꾼 뒤 서로 다른 선택지의 수가 최대가 되도록, 고칠 봉지(현재 개수 PP로 식별)와 새 개수 QQ를 정하려고 한다.

입력

첫째 줄에 정수 NN이 주어진다 (2≤N≤1002 \le N \le 100).

둘째 줄에 각 봉지에 든 사탕 개수를 나타내는 정수 B1,B2,…,BNB_1, B_2, \dots, B_N (1≤Bi≤70001 \le B_i \le 7000)이 공백으로 구분되어 주어진다.

출력

정수 두 개 PP와 QQ를 공백으로 구분하여 출력한다. 크리스티안은 현재 사탕이 PP개 든 봉지를 골라 그 내용물을 QQ개로 바꾸어야 한다. PP는 반드시 어떤 BiB_i와 같아야 하고, QQ는 양의 정수여야 한다.

서로 다른 선택지의 수를 최대로 만드는 방법이 여러 가지라면 PP가 가장 작은 것을 출력하고, 그래도 여러 가지라면 QQ가 가장 작은 것을 출력한다. 서로 다른 선택지의 수를 실제로 늘릴 수 있는 방법이 적어도 하나 존재함이 보장된다.

예제3

  1. 예제 1

    입력
    4
    1 3 4 4
    
    예상 출력
    4 9
    
  2. 예제 2

    입력
    5
    3 3 3 3 3
    
    예상 출력
    3 1
    
  3. 예제 3

    입력
    3
    2 2 2
    
    예상 출력
    2 1