题意:输入 n k l 你要做n个桶,每个桶需要k个木板,用木板拼好的桶相互之间体积的差距<=l,桶的体积大小就是最短的那根木板的长度大小。
http://codeforces.com/contest/985/problem/C
#include<bits/stdc++.h>
using namespace std;
const int maxn=1e5+50;
int a[maxn];
int vis[maxn];
int main(){
int n,k,l;
cin>>n>>k>>l;
for(int i=1;i<=n*k;i++)
cin>>a[i];
sort(a+1,a+n*k+1);
int pos;
if(a[n]-a[1]>l){
cout<<'0'<<endl;
return 0;
}else{
for(int i=n;i<=n*k;i++){
if(a[i]-a[1]>l){
pos=i-1;
break;
}
}
long long ans=0;
int cnt=0;
for(int i=1;i<=pos;i+=k){
ans+=a[i];
cnt++;
vis[i]=1;
if(cnt==n)
break;
}
if(cnt==n)
cout<<ans<<endl;
else{
for(int i=pos;i>=1;i--){
if(!vis[i]){
ans+=a[i];
cnt++;
}
if(cnt==n)
break;
}
cout<<ans<<endl;
}
}
return 0;
}