알고리즘/이진탐색

[백준/C++] 1822번 차집합

데메즈 2023. 2. 27. 15:54
728x90
반응형

문제는 여기!

#include <bits/stdc++.h>

using namespace std;
int NA, NB;
vector<int> va, vb, answer;
bool isln = false;

void solve() {
    for(int i=0; i<NA; i++){
        int x = va[i];
        int left = 0, right = NB - 1;
        isln = false;
        while(left<=right){
            int mid = (left + right)/2;
            if(vb[mid] == x){
                isln = true;
                break;
            }
            if(x<vb[mid]) right = mid - 1;
            else left = mid + 1;
        }
        if(!isln) answer.push_back(x);
    }

}

void input() {
    cin >> NA >> NB;
    for(int i=0; i<NA; i++){
        int x;
        cin >> x;
        va.push_back(x);
    }
    sort(va.begin(), va.end());
    for(int i=0; i<NB; i++){
        int x;
        cin >> x;
        vb.push_back(x);
    }
    sort(vb.begin(), vb.end());
}

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

    input();
    solve();

    cout << answer.size() << '\n';
    for(int i=0; i<answer.size(); i++) cout << answer[i] << ' ';

    return 0;
}
728x90
반응형

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

[백준/이진탐색/C++] 2512번 예산  (0) 2023.03.16
[백준/이진탐색/C++] 1920번 수 찾기  (0) 2023.02.22