금은보화
우측 버튼을 눌러 기기를 연결해주세요.
문제 정보
금은보화
어려움
유형
프로그래밍
배점
100
참여자
29
정답률
17.2%
4
4

문제


구름이와 바람이는 세계 각지에 숨겨진 보물들을 찾아 몇년째 여행 중이다. 기나긴 여정을 시작한 지 어느덧 1년이 되어 구름이와 바람이는 현재까지 찾은 보물들을 서로 나누어 가지려고 한다.

두 사람은 아직 보물들을 현금화하지 않았기 때문에, 보물은 훼손하지 않은채로 최대한 공평하게 나누어 가지려고 한다. 구름이와 바람이는 1년 동안 서로 다른 총 개의 보물을 수집했으며, 각 보물은 고유한 가격을 가지고 있다. 단, 가격이 같은 서로 다른 두 개 이상의 보물이 존재할 수 있다.

하나의 보물은 두 개 이상으로 쪼개어 가질 수 없다. 구름이와 바람이가 보물들을 나누어 가질 때, 두 사람이 보유한 보물들의 총 가격의 차가 최소가 되는 방법과 그러한 방법은 몇 가지가 있는지 계산하는 프로그램을 작성해주자. 단, 구름이와 바람이가 완전히 똑같은 값어치로 보물들을 둘로 나눌 수 없다면, 구름이가 조금 더 가지는 것으로 한다.


예제 설명


첫 번째 예제에서는 다섯 개의 보물을 수집했으며, 각 보물의 가격은 [2, 1, 8, 4, 16]이다.
구름이가 [16], 바람이가 [2, 1, 8, 4] 가격의 보물을 나눠 가진다면 두 사람이 가지는 보물의 총 가격차는 1이 된다.
그리고 가격차가 1이 되도록 보물을 나누는 방법은 위 경우가 유일하다. 따라서 경우의 수로도 1을 출력한다.


입력


첫째 줄에 수집한 보물의 개수를 의미하는 이 주어진다.
다음 개의 줄에는 보물의 가격을 의미하는 정수가 한 줄에 하나씩 주어진다.


  • 보물의 가격은  이상  이하의 정수이다.


출력


첫째 줄에는 두 사람이 얻을 수 있는 돈의 최소 차이를 출력한다.
둘째 줄에는 위 최소 차이를 얻을 수 있게 보물들을 분배하는 경우의 수를 출력한다. 단, 경우의 수가 너무 커질 수 있으므로 이를 으로 나눈 나머지를 출력한다.

입/출력 예시
:
공백
:
줄 바꿈
:
예시 1
입력
5
2
1
8
4
16
출력
1
1
예시 2
입력
4
1
1
1
1
출력
0
6
⋇ 입출력 형식을 잘 지켜주세요
Q&A
누구나 질문하고 답변할 수 있는 Q&A입니다. 문제를 풀며 어려웠던 부분에 대해 질문해보세요.
이 문제에 관한 질문 (0)