如果有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;
}
}

京公网安备 11010502036488号