1. 程式人生 > >4個數和為0

4個數和為0

給出N個整數,你來判斷一下是否能夠選出4個數,他們的和為0,可以則輸出"Yes",否則輸出"No"。

Input

第1行,1個數N,N為陣列的長度(4 <= N <= 1000)
第2 - N + 1行:Ai(-10^9 <= Ai<= 10^9)

Output

如果可以選出4個數,使得他們的和為0,則輸出"Yes",否則輸出"No"。

Sample Input

5
-1
1
-5
2
4

Sample Output

Yes
#include <iostream>
#include <algorithm>
#include <cmath>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <string>
#include <queue>
#include <map>
using namespace std;
typedef long long ll;
#define inf 0x3f3f3f3f
const int AA=4e5+7;
map<string,ll> M;
map<string,string> N;
ll a[101010];
int main()
{
    ll i,j,sum=0,n,l,r;
    cin>>n;
    for(i=0;i<n;i++)
        cin>>a[i];
    sort(a,a+n);
    for(i=0;i<n;i++)
    {
        for(j=i+1;j<n;j++)
        {
            sum=-(a[i]+a[j]);
            l=j+1;r=n-1;
            while(l<r)
            {
                if(a[l]+a[r]>sum)
                    r--;
                else
                if(a[l]+a[r]==sum)
                {
                    cout<<"Yes"<<endl;
                    return 0;
                }
                else
                    l++;
            }
        }
    }
    cout<<"No"<<endl;
    return 0;
}