View Code of Problem 133

#include<stdio.h>
int main()
{
	int t;
	scanf("%d",&t);
	while(t--)
	{
		int n,x,i,j,flag=0;
		scanf("%d %d",&n,&x);
		int a[n];
		for(i=0;i<n;i++)
			scanf("%d",&a[i]);
		//paixu 
		for(i=1;i<n;i++)
		{
			for(j=0;j<n-i;j++)
			{
				if(a[j]>a[j+1])
				{
					int t=a[j];
					a[j]=a[j+1];
					a[j+1]=t;
				}
			}
		}
		for(i=0;i<n;i++){
			if(x<a[i]) break;
			if(a[i]==x) {flag=1;break;}
		}
		int high=--i;
		int low =0;
		while(low<high)
		{
			if(a[high]+a[low]==x) {flag=1;break;}
			else if((a[high]+a[low])>x) high--;
			else if((a[high]+a[low])<x) low++;
		}
		if(flag==1)	 printf("YES\n");
		else printf("NO\n");
	}
	
}

Double click to view unformatted code.


Back to problem 133