View Code of Problem 3686

#include<stdio.h>
#include<string.h>
#include<math.h>
#include<algorithm>
using namespace std;
int main()
{
	int t,i;
	scanf("%d",&t);
	while(t--)
	{
		int n,x,b[1000000];
		scanf("%d%d",&n,&x);
		for(i=0;i<n;i++)
		{
			scanf("%d",&b[i]);
		}
		int low=0,high=n-1,flag=0;
		sort(b,b+n);
		while(low<high)
		{
			if(b[low]+b[high]>x) high--;
			if(b[low]+b[high]<x) low++;
			if(b[low]+b[high]==x)
			{
				flag=1;
				break;
			}
		}
		if(flag==0) printf("NO\n");
		else printf("YES\n");
	}
	return 0;
}

Double click to view unformatted code.


Back to problem 3686