시간 제한 | 메모리 제한 | 제출 | 정답 | 맞힌 사람 | 정답 비율 |
---|---|---|---|---|---|
1 초 | 1024 MB | 307 | 73 | 60 | 30.000% |
고려대학교 배드민턴 동아리원들이 배드민턴을 치려고 한다. 모두가 동시에 재밌게 배드민턴을 치기 위해, 동아리원들의 각각의 실력을 고려하여 다음과 같이 복식 팀을 만들려고 한다.
배드민턴 복식은 2명이 짝을 지어 대결하기 때문에, 양쪽에서 총 4명이 한 팀을 이루어 게임을 진행한다. 또한 모든 사람의 배드민턴 실력을 자연수로 나타낼 수 있다. 이 때 각 팀의 (실력 최댓값) - (실력 최솟값)
을 그 팀의 실력차라 하자. 비슷한 실력대의 사람들끼리 배드민턴을 쳐야 재미있게 칠 수 있으므로, 실력차가 작을수록 게임이 재미있다. 또한 실력차와 별개로 배드민턴을 치지 않는 것이 가장 재미가 없기 때문에, 팀을 가능한 한 많이 만들어야 한다.
지금은 사람이 많아 여러 팀을 만들어야 하므로, 모든 팀의 실력차의 총합이 최소가 되도록 해야 한다. 그런데 배드민턴에 참여한 인원수가 4의 배수가 아닐 수 있으므로, 누군가는 배드민턴을 치지 못할 수 있다.
실력차의 합이 최소가 되도록 팀을 구성할 때, 실력차의 합의 최솟값과 배드민턴을 치지 못하는 사람들이 누군지 구하는 프로그램을 작성하시오.
첫째 줄에 배드민턴에 참가한 인원수 $N$이 주어진다. ($4 \leq N \leq 10^5$)
둘째 줄에 $N$명의 배드민턴 실력을 나타내는 정수 $m_0,m_1,\ldots ,m_{N-1}$이 공백을 사이에 두고 주어진다. ($1\leq m_i \leq 10^9$)
실력은 사람의 번호 순서대로 주어지기 때문에 $i$번 사람의 실력은 $m_i$이며 번호는 0부터 시작한다.
첫째 줄에 실력차의 합의 최솟값을 출력한다.
둘째 줄부터 배드민턴을 치지 못하는 사람의 번호를 한 줄에 한 명씩 출력한다. 만약 여러 가지 경우가 있다면 아무 거나 출력한다.
10 4 99 3 98 50 51 2 97 1 96
6 4 5
(1, 4, 2, 3), (96, 99, 97, 98) 의 두 팀을 만들고 4번, 5번을 빼는 것이 실력 차를 최소로 만들 수 있다.
8 5 3 1 2 24 30 27 29
10
9 1 10 9 8 7 30 25 20 15
18 0
University > 고려대학교 > 2021 고려대학교 프로그래밍 경시대회 (KCPC) > Div. 1 B번