View Code of Problem 133

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int a[100000],X;
int compare(const void *a,const void *b)
{
    int *pa=(int *)a;
    int *pb=(int *)b;
    int num1=*pa;
    int num2=*pb;
    return num1-num2;
}
void solve(int n)
{
    int begin=0,end=n-1;
    while(begin<end)
    {
        int c=a[begin]+a[end];
        if(c==X)
        {
            printf("YES\n");
            return ;
        }
        else if(c>X)
        {
            end--;
        }
        else
        {
            begin++;
        }
    }
    printf("NO\n");
    return ;
}
int main()
{
    int n,i,T;
    scanf("%d",&T);
    while(T--)
    {
    scanf("%d%d",&n,&X);
    for(i=0;i<n;i++)
    {
        scanf("%d",&a[i]);
    }
    qsort(a,n,sizeof(int),compare);
    solve(n);
    }
    return 0;
}

Double click to view unformatted code.


Back to problem 133