#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.