如果有0,不行

如果相邻两个是相反数,不行,怎样才会没法控制相邻的不是相反数呢,注意到有3种以上数字时(相同数字就放一起,比如1,1,1,2,2,2,-1,-1,-1)必定能穿插着放使得相邻的不是相反数,所以只有全是一个数和它的相反数的时候不行,代码比较呆,看思路就行qwq

#include <bits/stdc++.h>
using namespace std;
using ll=long long;
int main() {
    ll n;
    cin>>n;
    unordered_map<ll,bool>mp;
    ll x;
    while(n--){
        cin>>x;
        if(!x){
            cout<<"NO";
            return 0;
        }
        mp[x]=1;
    }
    if(mp.size()==2){
        vector<pair<ll,bool>>a(2);
        ll cnt=0;
        for(auto&x:mp)a[cnt++]=x;
        if(-a[0].first==a[1].first){
            cout<<"NO";
            return 0;
        }else{
            cout<<"YES";
            return 0;
        }
    }else{
        cout<<"YES";
        return 0;
    }
}