Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<iostream>
- #include<algorithm>
- #include<vector>
- using namespace std;
- int main() {
- int n;
- cin >> n;
- vector<int> a;
- for (int i = 0; i < n; i++)
- {
- int s;
- cin >> s;
- a.push_back(s);
- }
- sort(a.begin(), a.end());
- //сортированный массив
- int q; // количество запросов
- cin >> q;
- for (int i = 0; i < q; i++)
- {
- int k;
- cin >> k;
- int l = -1, r = a.size();
- bool tr = false;
- while (l + 1 < r) // Сам бинарный поиск
- {
- // l - левая граница которая, r - правая граница и они за массивом изначально
- int m = (l + r) / 2;
- if (a[m] == k) // Давайте брать m середину и если a[m] то есть m элемент равен k то мы нашли элемент
- {
- cout << "Yes" << endl;
- tr = true;
- break;
- }
- if (a[m] < k) // Если же a[m] != k то если k и есть в нашем массиве то только в интервале (m, r)
- l = m;
- else // Если же a[m] > k то если k и есть в нашем массиве то только в интервале (l, m)
- r = m;
- // Мы свели наш интервал к меньшему в два раза
- }
- if (!tr) // Если мы не нашли элемент
- cout << "No" << endl;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement