#include<stdio.h> void QuickSort(int R[],int low,int high); int main(){ int t; scanf("%d",&t); while(t){ int n,x,flag=0,temp; scanf("%d %d",&n,&x); int arr[n]; for(int i=0;i<n;i++){ scanf("%d",&arr[i]); } int j=0; for(int i=1;i<n;i++) if(arr[i]<arr[i-1]){ temp=arr[i]; for(j=i-1;arr[j]>temp&&j>=0;j--) arr[j+1]=arr[j]; arr[j+1]=temp; } int i=0; j=n-1; while(i<j){ if(arr[i]>x||arr[j]*2<x)break; if(arr[i]+arr[j]==x){flag=1;break;} else if(arr[i]+arr[j]>x){ j--; }else if(arr[i]+arr[j]<x){ i++; } } flag==1?printf("YES\n"):printf("NO\n"); t--; } } void QuickSort(int R[],int low,int high) { int i,j,temp; i=low; j=high; if(low<high) { temp=R[low]; //设置枢轴 while(i!=j) { while(j>i&&R[j]>=temp) { --j; } if(i<j) { R[i]=R[j]; ++i; } while(i<j&&R[i]<temp) { ++i; } if(i<j) { R[j]=R[i]; --j; } } R[i]=temp; QuickSort(R,low,i-1); QuickSort(R,i+1,high); } } |
Double click to view unformatted code.