View Code of Problem 133

#include<iostream> //本题用万能头会报错,也不知为何
#include<algorithm>
using namespace std;

int main(){
	int T;
	scanf("%d",&T);
	while(T--) {
		int n, x;
		scanf("%d %d", &n, &x);
		int arr[n];
		for(int i=0; i<n; i++){
			scanf("%d",&arr[i]);
		}
		
		sort(arr, arr+n);  //快速排序 
		
		int flag = 0;		
		int low = 0, high = n-1;
		while(low < high) {
			if(arr[low] + arr[high] == x){
				printf("YES\n");
				flag=1;
				break;
			}
			else if(arr[low] + arr[high] < x){
				low++;
			}
			else high--;
		}
		
		if(flag==0){
			printf("NO\n");
		}
	}
	return 0;
}

Double click to view unformatted code.


Back to problem 133