이거 삽입하는 부분에서 왤케 시간이 오래 걸렸는 지..
#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 |