Round 778C

· · 个人记录

#include<bits/stdc++.h>
#define N 500005
using namespace std;
long long d[N],t,n;
int main(){
    cin>>t;
    while(t--){
        memset(d,0,sizeof(d));
        cin>>n;
        int cnt=1;
        for(int i=0;i<n;i++) cin>>d[i];
        if(n==1) cout<<"YES";
        sort(d,d+n);
        if(n==2){
            if(d[1]-d[0]<2) cout<<"YES";
            else cout<<"NO";
        }
        for(int i=1;i<n-2;i++){
            sort(d+i-1,d+i+2);
            if((d[i]-d[i-1])<2) d[i]+=d[i-1];
            else{
                cnt=0;
                cout<<"NO";
                break;
            }
            //sort(d+i,d+i+3);
        }
        if(n>=3&&cnt==1){
            sort(d+n-3,d+n);
            if(d[n-2]-d[n-3]<2&&abs(d[n-1]-d[n-2]-d[n-3])<2) cout<<"YES";
            else cout<<"NO";
        }
        /*if(n>=3&&d[n-2]<d[n-3]&&cnt==1){
            swap(d[n-2],d[n-3]);
            if(d[n-2]>d[n-1]) swap(d[n-2],d[n-1]);
            if(abs(d[n-2]-d[n-3])<2) d[n-2]+=d[n-3];
            else{
                cnt=0;
                //cout<<"NO";
            }
        }
        else if(n>=3&&d[n-1]>=d[n-2]&&cnt==1){
            if(abs(d[n-2]-d[n-3])<2) d[n-2]+=d[n-3];
            else{
                cnt=0;
                //cout<<"NO";
            }
        }
        if(cnt==1&&n!=1&&abs(d[n-1]-d[n-2])<2) cout<<"YES";
        if(cnt==1&&n!=1&&abs(d[n-1]-d[n-2])>1) cout<<"NO";*/
        //for(int i=0;i<n;i++) cout<<d[i]<<" ";
        cout<<endl;
    }
    return 0;
}