View Code of Problem 133

#include<iostream>
#include<algorithm>
using namespace std;
int main(){
	 int n,x,y;
	 cin>>n;
	 for(int i = 0;i<n;i++){   //组数 
	 	cin>>x>>y;
	 	int num[100010] = { };
	 	for(int j = 0;j<x;j++)cin>>num[j];
		 sort(num,num+x); 
		 int a = 0,b = x - 1,f = 0;
		 while(a<b){
		 	if(num[a] + num[b] == y){
		 		f = 1;
		 		break;
			 }else if( num[a] + num[b] > y ){
			 	b--;
			 }else{
			 	a++;
			 }
		 }
		 if(f)cout<<"YES";
		 else if( !f || a>=b)cout<<"NO";
		 cout<<endl;
	 }
	return 0;
} 

Double click to view unformatted code.


Back to problem 133