试着想一下不难发现只有两种情况会NO,一种是本身就含有0,另一种是这个序列全是某个数和其相反数,紧接着我们写出代码

#include <iostream>
#include<bits/stdc++.h>
#include <vector>
using namespace std;
#define int long long
//1 -1 -1
signed main(){
    int n;cin>>n;
    vector<int> a(n+1);
    map<int,int> mp;
    for(int i=1;i<=n;i++){
        cin>>a[i];
        mp[a[i]]++;
        if(a[i]==0){
            cout<<"NO";
            return 0;
        }
    }
    for(int i=1;i<=n;i++){
        if(mp[a[i]]+mp[-a[i]]==n&&mp[a[i]]&&mp[-a[i]]){
            cout<<"NO";
            return 0;
        }
    }
    cout<<"YES";
    return 0;
}