알고리즘/백준
[백준/C,C++] 10815번: 숫자 카드
이민훈
2021. 4. 20. 10:14
풀이
기본적인 이분 탐색 문제입니다.
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
int n, m;
bool search(const vector<int>& v, int num)
{
int left = 0, right = n - 1, mid;
while (left <= right) {
mid = (left + right) / 2;
if (v[mid] > num) right = mid - 1;
else if (v[mid] < num) left = mid + 1;
else return true;
}
return false;
}
int main(void)
{
ios_base::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
cin >> n;
vector<int> v(n);
for (int i = 0; i < n; i++) {
cin >> v[i];
}
sort(v.begin(), v.end());
cin >> m;
for (int i = 0; i < m; i++) {
int tmp; cin >> tmp;
cout << search(v, tmp) << ' ';
}
return 0;
}
반례
Input
10
10 -7 134 66 73 81 9 -150 95 88
10
-7 1 2 77 66 94 95 88 100 -150
Output
1 0 0 0 1 0 1 1 0 1