#include<iostream> #include<vector> #include<algorithm> #include<string> #include<climits> #include<cmath> #include<map> #include<set> #include<queue> using namespace std; int main() { int T; cin >> T; for (int i = 0; i < T; i++) { int n, x; cin >> n >> x; vector<int> nums(n); for (int j = 0; j < n; j++) cin >> nums[j]; sort(nums.begin(), nums.end()); int flag = 0; for (int j = 0; j < n; j++) { int left = j + 1; int right = nums.size() - 1; while (left <= right) { int pos = (right - left) / 2 + left; if (nums[pos] + nums[j] == x) { flag = 1; break; } if (nums[pos] + nums[j] > x) right = pos - 1; if (nums[pos] + nums[j] < x) left = pos + 1; } if (flag == 1) break; } if (flag == 1) cout << "YES" << endl; else cout << "NO" << endl; } } |
Double click to view unformatted code.