λ°±μ€ 11279: μ΅λ ν
https://www.acmicpc.net/problem/11279
μ κ·Ό λ°©ν₯ λ° λλ²κΉ
[1] μ΅λν 깑ꡬν
- insert(), pop() μ νΈλ¦¬λ₯Ό μ/νλ¨μΌλ‘ νμνμ¬ μμ΄ν κ° λμλΉκ΅λ₯Ό ν΅ν΄ κ° swap νλ μ μ ν¨μ μμ±
- insert() μμλ κ°μ μ΅νλ¨ λ Έλμ μΆκ°νμ¬, λΆλͺ¨ λ Έλκ° λλ³΄λ€ κ°μ΄ λλ³΄λ€ ν΄ λκΉμ§ swap
- pop() μμλ μ΅μλ¨ κ°μ μ κ±°νκ³ , μμ λ Έλκ° λλ³΄λ€ κ°μ΄ μμ λκΉμ§ swap
[2] λΌμ΄λΈλ¬λ¦¬ νμ©
- queue λΌμ΄λΈλ¬λ¦¬μ priority_queue νμ©
- κΈ°ν λ‘μ§μ λμΌ
[3] μΆλ ₯ μ΄μ
- [1], [2] λͺ¨λ μ΅μ΄ μ μΆμ μκ° μ΄κ³Όλ‘ μ€ν¨νμΌλ, λ‘μ§μ λ¬Έμ κ° μλ€κ³ νλ¨νμ¬ μ§λ¬Έκ²μνμ νμΈν¨.
- https://www.acmicpc.net/board/view/22716 λ΅λ³ νμΈνμ¬, C++ μ μ μΆλ ₯ κ΄λ ¨ μ½λ μΆκ°
- [1], [2] μ½λλ‘ μ μΆ λͺ¨λ μ±κ³΅
μ½λ
/* [1] 2412kb, 12ms */
#define MAX 100001
#include <cstdio>
#include <iostream>
using namespace std;
int h[MAX];
int cnt = 0;
void swap(int i, int j) {
int t = h[i];
h[i] = h[j];
h[j] = t;
}
void upHeapify(int i) {
if (i == 1) return;
if (h[i] > h[i / 2]) {
swap(i, i / 2);
upHeapify(i / 2);
}
}
void downHeapify(int i) {
int temp;
if (i * 2 > cnt) return;
if (i * 2 + 1 <= cnt) {
if (h[i * 2] > h[i * 2 + 1]) {
temp = i * 2;
}
else {
temp = i * 2 + 1;
}
}
else {
temp = i * 2;
}
if (h[temp] > h[i]) {
swap(i, temp);
downHeapify(temp);
}
}
void insert(int data) {
h[++cnt] = data;
upHeapify(cnt);
}
void pop() {
h[1] = h[cnt--];
downHeapify(1);
}
int main() {
freopen("input.txt", "r", stdin);
int N;
cin >> N;
for (int i = 0; i < N; i++) {
int data;
cin >> data;
if (data > 0) {
insert(data);
}
else {
if (cnt > 0) {
cout << h[1] << "\n";
pop();
}
else {
cout << 0 << "\n";
}
}
}
return 0;
}
/* [2] 2916KB, 16ms */
#include <iostream>
#include <cstdio>
#include <queue>
using namespace std;
int main() {
ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
freopen("input.txt", "r", stdin);
int N;
cin >> N;
priority_queue<int> q;
for (int i = 0; i < N; i++) {
int data;
cin >> data;
if (data > 0) {
q.push(data);
}
else {
if (q.empty()) {
cout << 0 << "\n";
}
else {
cout << q.top() << "\n";
q.pop();
}
}
}
return 0;
}
λ°°μ΄ μ
- μ±λ₯μ λμ¬μ£Όλ μ¬λ¬ μ½λμ μλ ₯μ κ°κ³Όνμ§ λ§κΈ° (ios_base::sync_with_stdio(false) λ±)
- 깑ꡬνμ΄ νλ€μ΄λ λ©λͺ¨λ¦¬λ μ€ν μλ μ±λ₯μ λ μ λμ¨λ€. ν νλ¦Ώ μΈμλμ.
'π» DEV > Algorithms & Data Structure' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[μκ³ λ¦¬μ¦][C++] νΈλΌμ΄ (Trie) (0) | 2024.03.13 |
---|---|
[μκ³ λ¦¬μ¦][C++] μΈκ·Έλ¨ΌνΈ νΈλ¦¬ (0) | 2024.03.13 |
[μκ³ λ¦¬μ¦][C++] Dijkstra (λ€μ΅μ€νΈλΌ) / μ΅λ¨ κ²½λ‘ νμ (0) | 2024.03.11 |
[Algorithms] μκ°λ³΅μ‘λ (Big-O Notation) λ? (0) | 2021.07.08 |
[Data Structure] μ€ν(Stack) κ³Ό ν(Queue) (0) | 2021.07.07 |
λκΈ