C 题目看懂了(后面都看不懂)
但是我在 Test 2 第 212 行 WA 了, 期望 2,但是输出 1.
求助大佬
#include<bits/stdc++.h>
#define ll long long
using namespace std;
const int maxn=2e6+10;
int T,n;
ll k,a[maxn],sum[maxn];
ll Div(ll a,ll b){
if(a<0&&a%b!=0)return a/b-1;
if(a>0&&a<b)return 0ll;
return a/b;
}
int main() {
read(T);
while(T--){
read(n,k);
//set<ll>temp;
for(int i(1);i<=n;++i){
read(a[i]);
}
sort(a+1,a+1+n);
for(int i(1);i<=n;++i){
sum[i]=sum[i-1]+a[i];
}
if(sum[n]<=k){
write(0);
putc('\n');
continue;
}
ll ans=1e18;
ll s1=0;
for(int b(0);b<n;++b){
s1=a[1]-Div((k-sum[n-b]+sum[1]),(b+1ll));
//write(s1),putc(' ');
if(s1+b<ans){
//write(s1,b);putc('\n');
if(s1+b<0)ans=min(ans,max(s1,(ll)b));
else ans=s1+b;
}
}
write(max(ans,1ll));
putc('\n');
}
flush();
return 0;
}