这是一道入门二分题
题目链接:https://ac.nowcoder.com/acm/problem/14416
#include <bits/stdc++.h>
using namespace std;
int n,x,a[1010];
//该函数用于查找所给整数中是否有合适的“c”
int reserch(int c){
int l=0,r=n-1,mid;
while(l<=r){
mid=l+r>>1;
if(a[mid]<c)
l=mid+1;
else if(a[mid]>c)
r=mid-1;
else
return 1;//若a[mid]=c,则返回1
}
return 0;//有些小伙伴喜欢返回-1,但是if会将非0数视为1,为了方便,我就直接返回0辅助判断了
}
int main(){
int c;
cin>>n>>x;
for(int i=0;i<n;i++)
cin>>a[i];
sort(a,a+n); //二分前将其排序使其单调(该题中数字顺序不重要)
for(int i=0;i<n;i++){
for(int j=0;j<n;j++){
c=a[i]*x*x+a[j]*x;//这里计算出来的结果其实是-c(将ax^2+bx+c=0中的c移至等号另一边计算得)
if(reserch(-c)){
cout<<"YES";
return 0;
}
}
}
cout<<"NO";
return 0;
}