View Code of Problem 3686

#include <stdio.h>
#include <stdlib.h>

int cmp(const void *a, const void *b){
	return *(int*)a-*(int*)b;
}

int main(){
	int t,n,x,flag,sum; 
	//输入1:1个整数t,t<30
	scanf("%d", &t);
	while(t--){
		flag=0;
		//输入2:2个整数n与x,n<1000000
		scanf("%d %d", &n, &x);
		int arr[n];
		//输入3:n个整数 
		for(int i=0; i<n; i++) scanf("%d", &arr[i]);
		//处理
		qsort(arr, n, sizeof(int), cmp);
		for(int i=0,j=n-1; i<j;){
			sum = arr[i]+arr[j];
			if(sum==x){
				flag=1;
				break;
			}else if(sum>x){
				j--;
			}else{
				i++;
			}
		}
		//输出:1个字符串 
		if(flag==1) printf("YES\n");
		else printf("NO\n");
	}
	
}

Double click to view unformatted code.


Back to problem 3686