해결한 사람
0
명
정답률
0.00
%
시간 제한
2000
ms
메모리 제한
245
MB
당신에게는 m = n·k개의 나무 판자가 있다. i-th번째 판자의 길이는 ai이다. 각각 k개의 판자로 이루어진 통 n개를 조립해야 하며, 아무 k개의 판자나 사용하여 통 하나를 만들 수 있다. 각 판자는 정확히 하나의 통에 속해야 한다.
통 j의 부피 vj는 그 통에 들어 있는 가장 짧은 판자의 길이와 같다고 하자.

부피 합이 최대가 되도록 정확히 n개의 통을 조립하려 한다. 단, 통들의 부피가 충분히 비슷해야 하므로 완성된 통 중 임의의 두 통의 부피 차이는 l을 초과해서는 안 된다. 즉, 임의의 1 ≤ x ≤ n 및 1 ≤ y ≤ n에 대해 |vx - vy| ≤ l이어야 한다.
충분히 비슷한 통들의 부피 합의 최댓값을 출력하고, 위 조건을 만족하는 것이 불가능하면 0을 출력한다.
첫째 줄에는 공백으로 구분된 세 정수 n, k, l (1 ≤ n, k ≤ 105, 1 ≤ n·k ≤ 105, 0 ≤ l ≤ 109)가 주어진다.
둘째 줄에는 공백으로 구분된 m = n·k개의 정수 a1, a2, ..., am (1 ≤ ai ≤ 109)가 주어지며, 이는 판자들의 길이이다.
임의의 1 ≤ x ≤ n 및 1 ≤ y ≤ n에 대해 |vx - vy| ≤ l 조건을 만족하는 통을 정확히 n개 만들었을 때, 통들의 부피 합의 최댓값을 출력한다. 그렇게 만드는 것이 불가능하면 0을 출력한다.
3 2 1
1 2 3 4 5 6
04 2 1
2 2 1 2 3 2 2 3
72 1 0
10 10
20첫 번째 예제에서는 다음과 같이 통을 만들 수 있다: , , , .
두 번째 예제에서는 다음과 같이 통을 만들 수 있다: , .
세 번째 예제에서는 다음과 같이 통을 만들 수 있다: .
네 번째 예제에서는 어떤 방식으로 나누더라도 통들의 부피 차이가 적어도 2이므로, 통들의 부피를 충분히 비슷하게 만들 수 없다.