Codeforces1656B题 Subtract Operation
Codeforces1656B题 Subtract Operation
题目
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≤t≤10^4) — the number of test cases. Description of the test cases follows.
The first line of each test case contains two integers nn and kk (2≤n≤2?10^5, 1≤k≤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 a1,a2,…,an(?10^9 ≤ai≤10^9).
It is guaranteed that the sum of n over all test cases is not greater that 2?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).
Example
input
Copy
4
4 5
4 2 2 7
5 4
1 9 1 3 4
2 17
17 0
2 17
18 18
output
Copy
YES
NO
YES
NO
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}.
思路
如果数组中恰好有两个数的差等于k,那么这两个数同时减去任意数,他们之间的差不会变,恒为k
代码
#include
#include