Subtract Operation (Codeforces 1656B)
Tags: Greedy, two pointers

You are given a list of $$$n$$$ integers. You can perform the following operation: you choose an element $$$x$$$ from the list, erase $$$x$$$ from the list, and subtract the value of $$$x$$$ from all the remaining elements. Thus, in one operation, the length of the list is decreased by exactly $$$1$$$.Given an integer $$$k$$$ ($$$k>0$$$), find if there is some sequence of $$$n-1$$$ operations such that, after applying the operations, the only remaining element of the list is equal to $$$k$$$.

Input: The input consists of multiple test cases. The first line contains a single integer $$$t$$$ ($$$1 \leq t \leq 10^4$$$) — the number of test cases. Description of the test cases follows.The first line of each test case contains two integers $$$n$$$ and $$$k$$$ ($$$2 \leq n \leq 2\cdot 10^5$$$, $$$1 \leq k \leq 10^9$$$), the number of integers in the list, and the target value, respectively.The second line of each test case contains the $$$n$$$ integers of the list $$$a_1, a_2, \ldots, a_n$$$ ($$$-10^9 \leq a_i \leq 10^9$$$).It is guaranteed that the sum of $$$n$$$ over all test cases is not greater that $$$2 \cdot 10^5$$$.

Output: For each test case, print YES if you can achieve $$$k$$$ with a sequence of $$$n-1$$$ operations. Otherwise, print NO.You may print each letter in any case (for example, "YES", "Yes", "yes", "yEs" will all be recognized as a positive answer).

Note: In the first example we have the list $$$\{4, 2, 2, 7\}$$$, and we have the target $$$k = 5$$$. One way to achieve it is the following: first we choose the third element, obtaining the list $$$\{2, 0, 5\}$$$. Next we choose the first element, obtaining the list $$$\{-2, 3\}$$$. Finally, we choose the first element, obtaining the list $$$\{5\}$$$. 

Sample Inputs:
4
4 5
4 2 2 7
5 4
1 9 1 3 4
2 17
17 0
2 17
18 18

Sample Outputs:
YES
NO
YES
NO

Solution (Python):
import sys
input = sys.stdin.readline

def main():
    (N, K) = map(int, input().split())
    A = set(map(int, input().split()))
    for a in A:
        if K + a in A:
            return print('YES')
    print('NO')
if __name__ == '__main__':
    T = int(input())
    for _ in range(T):
        main()

Solution (Python):
import math as m
for i in range(int(input())):
    (a, b) = map(int, input().split())
    lis = list(map(int, input().split()))
    s = set(lis)
    for i in lis:
        if i + b in s:
            print('YES')
            break
    else:
        print('NO')

Solution (Python):
t = int(input())
for i in range(t):
    (n, k) = map(int, input().split(' '))
    a = set(map(int, input().split(' ', n)))
    bol = 'NO'
    for x in a:
        if x - k in a:
            bol = 'YES'
            break
    print(bol)