RT,WA了四个点,求hack
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<cmath>
#define int long long
#define gt getchar
#define pt putchar
const int N=2e5+5;
using namespace std;
inline int read(){
int x=0,f=1;char ch=gt();
while(!isdigit(ch)){if(ch=='-')f=-1;ch=gt();}
while(isdigit(ch)){x=(x<<1)+(x<<3)+(ch^48);ch=gt();}return x*f;
}
inline void print(int x){
if(x<0)pt('-'),x=-x;
if(x>9)print(x/10);
pt(x%10+48);
}
int n,x,k,s[N];
struct abc{
int a;//价钱
int b;//商
}syz[N];
bool cmp1(abc a1,abc b1){//根据商从大到小排
return a1.b>b1.b;
}
bool cmp2(abc a1,abc b1){//根据余数从大到小排
return a1.a>b1.a;
}
signed main(){
n=read(),k=read(),x=read();
for(int i=1;i<=n;++i){
syz[i].a=read();
s[i]=s[i-1]+syz[i].a;
syz[i].b=syz[i].a/x;
}
sort(syz+1,syz+n+1,cmp1);
int cnt=0;
for(int i=1;i<=n;++i){
while(syz[i].b!=0){
syz[i].a-=x;
syz[i].b--;
cnt++;
}
if(cnt==k)break;
}
int ans=0;
sort(syz+1,syz+n+1,cmp2);
if(cnt!=k){
for(int i=1;i<=n;++i){
cnt++;
ans+=(x-syz[i].a);
if(cnt==k)break;
}
}
int sum=max(0LL,s[n]-x*k+ans);
print(sum);
return 0;
}