반응형
#include <iostream>
using namespace std;
int n, q;
int arr[500001] = { 0, };
int qarr[500001] = { 0, };
int binarysearch(int v, int s, int e) { // recursion
//1.base condition
if (s > e)
return -1;
//2.divide
int m = (s + e) / 2;
if (v == arr[m]) return m;
else if (v > arr[m]) return binarysearch(v, m + 1, e);
else return binarysearch(v, s, m - 1);
}
int binarysearch2(int v, int s, int e) { // while
int start_val = s;
int end_val = e;
while (start_val <= end_val) {
int m = (start_val + end_val) / 2;
if (v == arr[m]) return m;
else if (v > arr[m]) start_val = m + 1;
else end_val = m - 1;
}
return -1;
}
int main() {
cin >> n;
for (int i = 0; i < n; i++)
cin >> arr[i];
cin >> q;
for (int i = 0; i < q; i++)
cin >> qarr[i];
for (int i = 0; i < q; i++) {
int val = binarysearch(qarr[i],0,n-1);
cout << val;
if (i != (q - 1))
cout << ' ';
}
cout << endl;
return 0;
}
반응형
'알고리즘 > 이분 탐색' 카테고리의 다른 글
[백준] 12738-가장 긴 증가하는 부분 수열 3(C++) (0) | 2021.08.14 |
---|---|
[백준] 1477-휴게소 세우기(C++) (0) | 2021.08.13 |
[백준] 1072-게임(C++) (0) | 2021.08.12 |
[백준] 1939-중량제한(C++) (0) | 2021.05.22 |