View Code of Problem 133

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

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

}



int main(){
	int T;
	while((scanf("%d",&T)!=EOF)){
		int n,x;
		for(int z=0; z<T; z++){
			scanf("%d %d",&n,&x);
			int nums[100005]={0};
			for(int i=0; i<n;i++){
				scanf("%d",&nums[i]);				
			}

			qsort(nums,n,sizeof(int),cmp);
			int l=0,r=n-1;
			int flag = 0;
			while(l<r){
				if(nums[l] + nums[r]==x){
					flag=1;
					break;
				}else if(nums[l] + nums[r] >x)
					r--;
				else if(nums[l] + nums[r] < x)
					l++;
			}
			if(flag==1)
				printf("YES\n");
			else
				printf("NO\n");
		}
		
	
	}

	return 0;
}

Double click to view unformatted code.


Back to problem 133