View Code of Problem 133

#include <algorithm>
#include <cctype>
#include <cmath>
#include <cstdio>
#include <cstring>
#include <iostream>
#include <map>
#include <set>
#include <stack>
#include <string>
#include <vector>
using namespace std;

int main(void)
{
    int arr[5000005];
    int t;
    int n, x;
    scanf("%d", &t);

    while (t--)
    {
        set<int> input;
        int flag = 0;
        scanf("%d %d", &n, &x);
        input.clear();
        memset(arr, 0, sizeof(arr));
        for (int i = 0; i < n; i++)
        {
            int tmp;
            scanf("%d", &tmp);
            arr[tmp]++;
            input.insert(tmp);
        }
        for (auto i : input)
        {
            if (x >= i)
            {
                if (x - i != i)
                {
                    if (arr[x - i] > 0)
                    {
                        flag = 1;
                        break;
                    }
                }
                else
                {
                    if (arr[x - i] > 1)
                    {
                        flag = 1;
                        break;
                    }
                }
            }
            else
            {
                break;
            }
        }
        if (flag)
            printf("YES\n");
        else
            printf("NO\n");
    }
}

Double click to view unformatted code.


Back to problem 133