View Code of Problem 133

#include <stdio.h>
#include <stdlib.h>
#include<ctype.h>
#include<string.h>
#include<math.h>
void charusort(int a[], int n)
{
	int temp, i, j;
	for (i = 1; i < n; i++)
	{
		temp = a[i];
		for (j = i - 1; temp < a[j] && j >= 0; j--)
		{
			a[j + 1] = a[j];
		}
		a[j + 1] = temp;
	}
}
int main()
{
	int n, x, t, i, j;
	scanf("%d", &t);
	while (t--)
	{
		scanf("%d%d", &n, &x);
		int a[100000] = { 0 };
		for (i = 0; i < n; i++)
			scanf("%d", &a[i]);
		
		charusort(a,n);
		int flag = 0;
		i = 0;
		j = n - 1;
		while(i<j)
		{
			if (a[i] + a[j] == x)
			{
				flag = 1;
				break;
			}
			else if (a[i] + a[j] < x)
				i++;
			else if (a[i] + a[j] > x) 
				j--;
	
		}
		if (flag == 1)
			printf("YES\n");
		else printf("NO\n");
	}
	return 0;
}

Double click to view unformatted code.


Back to problem 133