Algorithm πŸ§‘πŸ»‍πŸ’»/λ°±μ€€(BOJ)

[λ°±μ€€,c++] 10815번 - μˆ«μžμΉ΄λ“œ

dkswnkk 2021. 10. 24. 22:07
 

10815번: 숫자 μΉ΄λ“œ

첫째 쀄에 상근이가 κ°€μ§€κ³  μžˆλŠ” 숫자 μΉ΄λ“œμ˜ 개수 N(1 ≤ N ≤ 500,000)이 μ£Όμ–΄μ§„λ‹€. λ‘˜μ§Έ μ€„μ—λŠ” 숫자 μΉ΄λ“œμ— μ ν˜€μžˆλŠ” μ •μˆ˜κ°€ μ£Όμ–΄μ§„λ‹€. 숫자 μΉ΄λ“œμ— μ ν˜€μžˆλŠ” μˆ˜λŠ” -10,000,000보닀 ν¬κ±°λ‚˜ κ°™κ³ , 10,

www.acmicpc.net

 

#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;

int main() {
    ios_base::sync_with_stdio(false);
    cin.tie(0);

    int N, M;
    cin >> N;
    vector<int>v;
    for (int i = 0; i < N; i++) {
        int number; cin >> number;
        v.push_back(number);
    }
    sort(v.begin(), v.end());
    cin >> M;

    for (int i = 0; i < M; i++) {
        int start = 0;
        int end = N - 1;
        int check;
        cin >> check;
        while (start <= end) {
            int mid = (start + end) / 2;
            if (v[mid] == check) {        //μ°ΎλŠ”κ°’μ΄ 있으면 좜λ ₯
                cout << 1 << " ";
                break;
            }
            else if (v[mid] < check) {        //μ°ΎλŠ”κ°’μ΄ 더 크면 였λ₯Έμͺ½νƒμƒ‰
                start = mid + 1;
            }
            else {                        //μ°ΎλŠ” 값이 μž‘μœΌλ©΄ μ™Όμͺ½ 탐색
                end = mid - 1;
            }
            if (start > end) cout << 0 << " ";
        }
    }
}