View Code of Problem 3686

#include<stdio.h>           //这题先快速排序 
#include<stdlib.h>
int compare(const void *a,const void *b)
{
	return *(int*)a-*(int*)b;                      //(int *)a表示将a地址强制类型转换成整形地址类
	                                               //*(int*)a 就是得到目标地址的值
}
int main() {
	int T;
	int n,x;
	int a[100000];
	scanf("%d",&T);
	while(T--){
		scanf("%d %d",&n,&x);   //输入女朋友数和持有的钱
		for(int i=0;i<n;i++)
		 scanf("%d",&a[i]);
		
		qsort(a,n,sizeof(int),compare);   //快速排序,从小到大 
		
		int c=0,d=n-1;
		while(c<d){
			if(a[c]+a[d]==x){
			printf("YES\n");
			break;
			} 
			else if(a[c]+a[d]>x) 
			d--;
			else
			c++;
		}
		if(c==d)
		printf("NO\n");
	}  
} 

Double click to view unformatted code.


Back to problem 3686