社区讨论
#1#2AC,33pts
P3378【模板】堆参与者 1已保存回复 0
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 0 条
- 当前快照
- 1 份
- 快照标识符
- @mk7m7oi8
- 此快照首次捕获于
- 2026/01/10 09:17 2 个月前
- 此快照最后确认于
- 2026/01/12 13:25 2 个月前
CPP
#include <bits/stdc++.h>
using namespace std;
long long a, b, c, h[1000001], last = 0,l[1000001],ll=0;
int main() {
cin >> a;
for (int i = 1; i <= a; i++) {
cin >> b;
if (b == 1) {
cin >> c;
h[++last] = c;
int nxt = last, now=last;
while (now > 1) {
nxt = now / 2;
if (h[now] <= h[nxt]) {
break;
}
swap(h[nxt], h[now]);
now = nxt;
}
}
if (b == 2){
cout << h[1] << endl;
}
if (b == 3) {
h[1] = 0;
h[1] = h[last];
last--;
int nxt, now = 1;
while (nxt * 2 <= last) {
nxt = now * 2;
if (nxt < last && h[nxt + 1] < h[nxt]) {
nxt++;
}
if (h[now] <= h[nxt]) {
break;
}
swap(h[now], h[nxt]);
now = nxt;
}
}
}
}
回复
共 0 条回复,欢迎继续交流。
正在加载回复...