intsearch(vector<int> &nums, int target) { int left = 0; int right = nums.size() - 1; while (left <= right) { int middle = left + ((right - left) / 2); if (nums[middle] > target) { right = middle - 1; } elseif (nums[middle] < target) { left = middle + 1; } else { return middle; } } return-1; }
intmain() { int n, m; cin >> n >> m; vector<int> v; for (int i = 0; i < n; i++) { int x; cin >> x; v.push_back(x); } sort(v.begin(), v.end()); for (int i = 0; i < m; i++) { int x; cin >> x; if (search(v, x) != -1) { cout << "YES" << endl; } else { cout << "NO" << endl; } } return0; }
intlower_bound(vector<int> &nums, int k) { int left = 0, right = nums.size() - 1; while (left < right) { int mid = left + ((right - left) >> 1); if (nums[mid] >= k) right = mid; else left = mid + 1; } if (nums[left] < k) left++; return left; }
intupper_bound(vector<int> &nums, int k) { int left = 0, right = nums.size() - 1; while (left < right) { int mid = left + ((right - left) >> 1); if (nums[mid] > k) right = mid; else left = mid + 1; } if (nums[left] <= k) left++; return left; }
intlower_bound(vector<int> &nums, int k) { int left = 0, right = nums.size() - 1; while (left < right) { int mid = left + ((right - left) >> 1); if (nums[mid] >= k) right = mid; else left = mid + 1; } if (nums[left] < k) left++; return left; }
intupper_bound(vector<int> &nums, int k) { int left = 0, right = nums.size() - 1; while (left < right) { int mid = left + ((right - left) >> 1); if (nums[mid] > k) right = mid; else left = mid + 1; } if (nums[left] <= k) left++; return left; }
intsearch(vector<int> &nums, int target) { int left = 0; int right = nums.size() - 1; while (left <= right) { int middle = left + ((right - left) / 2); if (nums[middle] > target) { right = middle - 1; } else { left = middle + 1; } }
return left - 1; }
intleft_bound(vector<int> &nums, int target) { int left = 0; int right = nums.size();
while (left < right) { int mid = ((left + right) / 2); if (nums[mid] == target) { right = mid; } elseif (nums[mid] < target) { left = mid + 1; } elseif (nums[mid] > target) { right = mid; } }