将a排序
max->x1->max->x2>max->x3…->max;
1只球可以使max多消耗一次
令sum=a1+a2+a3+…a(n-1);
如果sum>=max
ans=1;
如果sum<max
ans=max-sum;
有个特例是全0
#include<bits/stdc++.h>
using namespace std;
const int maxn=1e5+7;
const int inf=0x3f3f3f3f;
typedef long long ll;
vector<ll> a;
int main()
{
int t;
scanf("%d",&t);
while(t--)
{ a.clear();
int n;
scanf("%d",&n);
int f=0;
int jg=0;
for(int i=1;i<=n;i++)
{ ll x;
scanf("%lld",&x);
if(x)
jg=1;
a.push_back(x);
}
if(!jg)
printf("0\n");
else if(f)
printf("1\n");
else
{
sort(a.begin(),a.end());
ll sum=0;
int sz=a.size()-1;
ll ma=a[sz];
for(int i=0;i<a.size()-1;i++)
{
sum+=a[i];
}
if(sum>=ma)
printf("1\n");
else
{
printf("%lld\n",ma-sum);
}
}
}
}