#include<bits/stdc++.h> #include<map> using namespace std; int a[1000]; int main(){ int T; scanf("%d",&T); while(T--){ int n,x,key; map<int,int>m; scanf("%d",&n); scanf("%d",&x); bool flag=false; int a[1000]; memset(a,0,sizeof(a)); for(int i=0;i<n;i++){ scanf("%d",&a[i]); m[a[i]]=i; } a[n]=x; m[a[n]]=n; sort(a,a+n+1); key=m.find(x)->second; int max=key-1;int min=0; while(min<max){ if(a[min]+a[max]==x){ flag=true;break; } else if(a[min]+a[max]>x){ max--; } else if(a[min]+a[max]<x){ break; } } if(flag==true){ printf("YES"); printf("\n"); } else{ printf("NO"); printf("\n"); } } } |
Double click to view unformatted code.