用了简单的做法 lower_bound
看了他们暴力枚举才知道二分的使用意义 就是在查询能否在数组中找到-c这个值
#include <bits/stdc++.h>
using namespace std;
const int N = 1010;
int a[N];
int n, x;
bool find(int c)
{
return c == *lower_bound(a, a+n, c);
}
int main()
{
cin >> n >> x;
for (int i = 0; i < n; i ++) cin >> a[i];
sort(a, a+n);
bool flag = false;
for (int i = 0; i < n; i ++)
for (int j = 0; j < n; j ++)
{
int c = a[i]*a[i]*x + a[j]*x;
if (find(-c)) {
flag = true;
}
}
if (flag) puts("YES");
else puts("NO");
return 0;
}
京公网安备 11010502036488号