알고리즘/이진탐색

[백준/이진탐색/C++] 1920번 수 찾기

데메즈 2023. 2. 22. 13:00
728x90
반응형

문제는 여기!

#include <bits/stdc++.h>

using namespace std;
int N, M;
vector<int> vN, vM;

void find(int x){
    int start = 0, end = N-1, std = (N-1)/2;

    while(1){
        if(start > end){
            cout << 0 << '\n';
            return;
        }
        if(x == vN[std]){
            cout << 1 << '\n';
            return;
        } else if(x < vN[std]){
            end = std - 1;
            std = (start + end)/2;
        } else {
            start = std + 1;
            std = (start + end)/2;
        }
    }
}

void solve(){

    for(int i=0; i<M; i++){
        int x = vM[i];
        find(x);
    }
}

void input() {
    cin >> N;
    for(int i=0; i<N; i++){
        int x;
        cin >> x;
        vN.push_back(x);
    }
    sort(vN.begin(), vN.end());
    cin >> M;
    for(int i=0; i<M; i++){
        int x;
        cin >> x;
        vM.push_back(x);
    }
}


int main() {
    ios::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);

    input();
    solve();

    return 0;
}
728x90
반응형

'알고리즘 > 이진탐색' 카테고리의 다른 글

[백준/이진탐색/C++] 2512번 예산  (0) 2023.03.16
[백준/C++] 1822번 차집합  (0) 2023.02.27