不需要特判

  1. 总体思路为对于每一个颜色的气球,
  2. 看下如果除了当前的气球外的所有种类气球互相碰撞得到的最少气球数,
  3. 然后将最少气球数与当前颜色气球数比较,若小于则答案++,个人感觉这是比较完备的做法
#include<bits/stdc++.h>
#define int long long
#define endl '\n' 
#define x first
#define y second
#define de(a)  #a << " = " << (a) 
#define all(x) x.begin(), x.end()
using namespace std;
typedef pair<int,int> PII;
constexpr int N=2e5+10,mod=1e9+7,inf=0x3f3f3f3f3f3f3f3f;
constexpr double eps=1e-8,pi=acos(-1.0);
void solve(int T)
{
    int n,sum=0,ans=0,maxx1=0,maxx2=0;
    cin>>n;
    vector<int>a(n+1);
    for(int i=1;i<=n;i++)cin>>a[i],sum+=a[i];
    for(int i=1;i<=n;i++)
    {
        if(a[i]>maxx1)maxx2=maxx1,maxx1=a[i];
        else if(a[i]>maxx2)maxx2=a[i];
    }
    for(int i=1;i<=n;i++)
    {
        if(a[i]==maxx1&&max(2*maxx2-(sum-a[i]),(sum-a[i])%2)<a[i])ans++;
        else if(a[i]!=maxx1&&max(2*maxx1-(sum-a[i]),(sum-a[i])%2)<a[i])ans++;
    }
    cout<<ans<<endl;
}
signed main()
{
    bool multitest=0;
    //cout<<setiosflags(ios::fixed),cout.precision(2);
    ios::sync_with_stdio(false),cin.tie(nullptr);
    int _t=1;
    if(multitest)cin>>_t;
    for(int i=1;i<=_t;i++)
    {
        solve(i);
    }
    return 0;
}