題目
給出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
Sponsor
解題思路
排序+二分
代碼如下
#include<iostream>
#include<algorithm>
using namespace std;
long long a[1010];
int main()
{
long long i,j,l,r;
long long n;
long long ans;
int flag=0;
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++)
{
ans=-a[j]-a[i];
l=j+1;
r=n-1;
while(l<r)
{
if(a[l]+a[r]==ans)
{
cout<<"Yes"<<endl;
return 0;
}
else if(a[l]+a[r]>ans)
r--;
else if(a[l]+a[r]<ans)
l++;
}
}
}
cout<<"No"<<endl;
return 0;
}