样例对了,但结果错了
#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;
}