求助今晚的 C
查看原帖
求助今晚的 C
414386
Isshiki·Iroha楼主2021/12/28 01:21

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;
}

2021/12/28 01:21
加载中...