본문 바로가기
코딩/cpp

[백준]1927번

by 적막한숲 2025. 9. 28.

이거 삽입하는 부분에서 왤케 시간이 오래 걸렸는 지..

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


std::vector<long> v;

void Sort(long);

int main() {
    int n, count = 0;
    long x; // 0 -> 가장 작은 값 출력, 배열에서 삭제, 자연수 -> 배열에 x 넣는다.
    std::cin >> n;
    std::ostringstream buffer;
    for (int i = 0; i < n; i++) {
        std::cin >> x;
        if (v.empty() && !x) {
            buffer << x << std::endl;
        } else if (!x) {
            buffer << v.front() << std::endl;
            v.erase(v.begin());
        } else {
            Sort(x);
        }
    }
    std::cout << buffer.str();
    return 0;
}

void Sort(long value) {
    if (v.empty()) {
        v.push_back(value);
        return;
    }
    int left = 0, right = v.size() - 1;

    while (left <= right) {
        int m = (left+right) / 2;
        if (v[m] < value) {
            left = m + 1;
        } else {
            right = m - 1;
        }
    }

    // if (m >= v.size()) {
    //     v.push_back(value);
    // } else {
    //     v.insert(v.begin() + m+1,1, value);
    // }
    v.insert(v.begin() + left, value);
}

'코딩 > cpp' 카테고리의 다른 글

[백준] 2805번  (0) 2025.09.28
[백준] 2630번  (0) 2025.09.28
[백준] 1541번  (0) 2025.09.28
[백준] 1012번  (0) 2025.09.27
[백준] 17626번  (0) 2025.09.27