给出N个整数,你来判断一下是否能够选出4个数,他们的和为0,可以则输出"Yes",否则输出"No"。
Input
第1行,1个数N,N为数组的长度(4 <= N <= 1000) 第2 - N + 1行:A[i](-10^9 <= A[i] <= 10^9)
Output
如果可以选出4个数,使得他们的和为0,则输出"Yes",否则输出"No"。
Input示例
5 -1 1 -5 2 4
Output示例
Yes
#include <iostream> #include <cstdio> #include <algorithm> using namespace std; const int maxn = 1000 + 10; typedef long long ll; ll arr[maxn]; ll CD[maxn*maxn]; int main() { int n; while (~scanf("%d", &n)) { for (int i = 0; i < n; i++) { scanf("%lld", &arr[i]); } sort(arr, arr+n); int flag = 0; for (int i = 0; i < n; i++) { for (int j = i+1; j < n; j++) { ll tmp = -(arr[i] + arr[j]); int l = j+1, r = n-1; while (l < r) { if (arr[l] + arr[r] == tmp) { flag = 1; break; } else if (arr[l] + arr[r] < tmp) { l++; } else { r--; } } } } if (flag == 1) printf("Yes\n"); else printf("No\n"); } return 0; }