hihoCoder#1105 题外话·堆

时间:2023-03-09 16:35:00
hihoCoder#1105 题外话·堆

原题地址

有没有更优雅地堆模板啊,总感觉我写的有些啰嗦

代码:

 #include <iostream>

 using namespace std;

 #define MAX_NODE 100008

 struct Heap {
int core[MAX_NODE];
int size; Heap() : size() {} void push(int w) {
int c, p;
core[++size] = w;
c = size;
p = c >> ;
while (c > && core[p] < core[c]) {
swap(core[p], core[c]);
c = p;
p >>= ;
}
} int pop() {
int res = core[];
int c, k;
swap(core[], core[size]);
size--;
c = ;
k = c << ;
while (k <= size) {
if (k + <= size && core[k + ] > core[k])
k = k + ;
if (core[k] <= core[c])
break;
swap(core[k], core[c]);
c = k;
k <<= ;
}
return res;
}
}; int main() {
int N, w;
char t;
Heap h; scanf("%d\n", &N);
while (N--) {
scanf("%c", &t);
if (t == 'A') {
scanf("%d\n", &w);
h.push(w);
}
else {
scanf("%c", &t);
printf("%d\n", h.pop());
}
}
return ;
}