#include<bits/stdc++.h>
using namespace std;
long long t,n,k,a[200010];
int main(){
cin>>t;
while(t--){
cin>>n>>k;long long mi=1e10,t;
for(int i=1;i<=n;i++)cin>>a[i],mi=min(mi,a[i]),t+=a[i];
int sum=0;sort(a+1,a+n+1);
if(a[1]>k/n)sum+=a[1]-k/n;
for(int i=n;i>=3;i--){
if(a[i]!=mi){
t-=a[i]-mi;
a[i]=mi;
sum++;
}if(t<=k)break;
}if(t>k)sum+=min(t-k,1LL);
cout<<sum-1<<endl;
}
return 0;
}
2 个赞
先认真思考一下吧!
4 个赞
能看看我的题吗!!!求你了
3 个赞
#include<bits/stdc++.h>
using namespace std;
long long t,n,k,a[200010];
int main(){
cin>>t;
while(t–){
cin>>n>>k;long long mi=1e10,t;
for(int i=1;i<=n;i++)cin>>a[i],mi=min(mi,a[i]),t+=a[i];
int sum=0;sort(a+1,a+n+1);
if(a[1]>k/n)sum+=a[1]-k/n;
mi=k/n;
for(int i=n;i>=2;i–){
if(a[i]!=mi){
t-=a[i]-mi;
a[i]=mi;
sum++;
}if(t<=k)break;
}cout<<sum<<endl;
}
return 0;
}0 wa
3 个赞
这个思路应该AC不了,另外除了思路以外,还有一些粗心的地方,例如全局一个t变量,局部也有一个t变量,并未初始化,直接进行累加等
4 个赞