View Code of Problem 133

#include<stdio.h>
using namespace std;
int main()
{
	int n,i,j;
	int m,x;
	scanf("%d",&n);
	while(n--){		
		int a[100010];
		scanf("%d%d",&m,&x);
		for(i=0;i<m;++i){
			scanf("%d",&a[i]);
		}
		int min,tmp;
		for(i=0;i<m;++i){
			min=i;
			for(j=i;j<m;++j){
				if(a[j]<a[min])	min=j;
			}
			tmp=a[i];
			a[i]=a[min];
			a[min]=tmp;
		}				
	
		i=0;j=m-1;
		int flag=1;
		while(i<j){
			if(a[i]+a[j]<x)i++;
			else if(a[i]+a[j]>x)	j--;
			else if(a[i]+a[j]==x){
				flag=0;
				break;
			}
		}
		if(flag==0)	printf("YES\n");
		else	printf("NO\n");
	}
	return 0;
 } 

Double click to view unformatted code.


Back to problem 133