求助 为什么错了
查看原帖
求助 为什么错了
1068295
bushenghao楼主2024/3/28 21:22

样例对了,但结果错了

#include<bits/stdc++.h>
using namespace std;
const int inf=1e9+7;
const int mod=998244353;
const int N=2e5+10,M=N<<1;
long long c[N];
int er(long long w,long long C,long long n)
{
	long long sum=0;
	for(int i=1;i<=n;i++)
	{
		long long da=(c[i]+w*2)*(c[i]+w*2);
		sum+=da;
	}
	if(sum==C)
		return 1;
	else if(sum>C)
		return 0;
	else
		return -1;
}
void solve()
{
	long long C;
	long long n;
	cin>>n>>C;
	
	for(long long i=1;i<=n;i++)
	{
		cin>>c[i];
	}
	long long l=1,r=2e8+5;
	long long ans=0;
	while(l<=r)
	{
		long long mid=(l+r)/2;
		int f=er(mid,C,n);
		if(f==1)
		{
			ans=mid;
			r=mid-1;
		}
		else if(f==0)
		{
			r=mid-1;
		}
		else
		{
			l=mid+1;
		}
	}
	cout<<ans;
	return ;
}
int main()
{
	int t;
	cin>>t;
	while(t--)
	{
		solve();
		cout<<endl;
	}
	return 0;
}
2024/3/28 21:22
加载中...