
代码80分:
#include<bits/stdc++.h>
using namespace std;
long long n,k,a[100010],sum[100010],ziro[100010],l,r,mid,ans=1e9;
int find(int x){
int l=1,r=n,mid;
while(l<r){
mid=(l+r)/2;
if(a[mid]>=x){
r=mid;
}else{
l=mid+1;
}
}
return r;
}
int main(){
cin>>n>>k;
for(int i=1;i<=n;i++){
cin>>a[i];
}
sort(a+1,a+n+1);
for(int i=1;i<=n;i++){
sum[i]=a[i]+sum[i-1];
ziro[i]=ziro[i-1];
if(a[i]==0){
ziro[i]++;
}
}
for(int i=1;i<=n;i++){
if(!a[i]){
continue;
}
long long t=a[i],num=find(t);
long long sun=(sum[n]-sum[num-1])-(n-num+1)*t+sum[num-1]+(num-1-ziro[num-1])*k;
ans=min(ans,sun);
}
cout<<ans;
return 0;
}