#include<iostream>
#include<cstdio>
#include<cmath>
#include<cstring>
#include<string>
#include<iomanip>
#include<algorithm>
#include<vector>
#include<queue>
#include<stack>
#include<deque>
#include<map>
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
const int N = 1e6 + 10, M = 1e5 + 10;
const double PI = acos(-1.0);
const double eps = 1e-6;
const ll mod = 1e9 + 7;
const int INF = 0x3f3f3f3f;
ll heap[N], len = 0;
int n;
void push(ll x) {
heap[++len] = x;
ll i = len;
while (i > 1 && heap[i] < heap[i / 2]) {
swap(heap[i], heap[i / 2]);
i = i / 2;
}
}
void pop() {
heap[1] = heap[len--];
ll i = 1;
while (2 * i <= len) {
int son = 2 * i;
if (son + 1 <= len && heap[son + 1] < heap[son])son++;
if (heap[son] < heap[i]) {
swap(heap[son], heap[i]);
i = son;
} else break;
}
}
int main() {
// freopen("xxx.in","r",stdin);
// freopen("xxx.out","w",stdout);
scanf("%d", &n);
// printf("%d\n",n);
while (n--) {
int op;
scanf("%d", &op);
// printf("%d\n",op);
if (op == 1) {
ll x;
scanf("%lld", &x);
push(x);
}
if (op == 2)printf("%lld\n", heap[1]);
else pop();
}
// fclose(stdin);
// fclose(stdout);
return 0;
}
悬赏关注一个