https://www.acmicpc.net/problem/10815
이분 탐색
#include <cstdio>
#include <algorithm>
using namespace std;
int n, m, ar[500001];
bool bs(int find)
{
int s = 0, f = n - 1;
while (s <= f) {
int mid = (s + f) / 2;
if (ar[mid] == find) return 1;
else if (ar[mid] > find) f = mid - 1;
else s = mid + 1;
}
return 0;
}
int main()
{
scanf("%d", &n);
for (int i = 0; i < n; ++i) scanf("%d", &ar[i]);
sort(ar, ar + n);
scanf("%d", &m);
while (m--) {
int a;
scanf("%d", &a);
printf("%d ", bs(a));
}
return 0;
}
'온라인저지' 카테고리의 다른 글
[BOJ] 1976번: 여행 가자 (0) | 2018.08.11 |
---|---|
[BOJ] 1654번: 랜선 자르기 (0) | 2018.08.09 |
[BOJ] 2805번: 나무 자르기 (0) | 2018.08.09 |
[BOJ] 1162번: 도로포장 (0) | 2018.08.07 |
[BOJ] 10545번: 뚜기뚜기메뚜기 (0) | 2018.08.07 |
[BOJ] 2698번: 인접한 비트의 개수 (0) | 2018.08.07 |
댓글