考虑输出NO的情况:已知在长度<=2的字段和为0时输出NO,而长度<=2的字段和为0有以下两种情况:1.某一个元素为0,此时将该元素视为单独的长度<=2的字段。2.序列内只存在两种元素,即n和-n,在推断出以上两种判断条件后,我们对序列内的元素种类进行判断,最后得出结果(我是彩笔补药骂我)
#include <iostream>
#include <map>
#include <vector>
using namespace std;
typedef long long ll;
int main() {
int n;
cin>>n;
vector<int>v(n+1);
map<ll,ll>mp;
for (int i=1;i<=n;i++) {
int x;
cin>>x;
if(x==0){
cout<<"NO"<<endl;
return 0;
}
mp[x]++;
}
if(mp.size()>=3)
{
cout<<"YES"<<endl;
}
else if(mp.size()==2)
{
ll sum=0;
for(auto it:mp)
{
sum+=it.first;
}
if(sum==0)cout<<"NO"<<endl;
else cout<<"YES"<<endl;
}
else cout<<"YES"<<endl;
}
// 64 位输出请用 printf("%lld")

京公网安备 11010502036488号