洛谷 - P3378 【模板】堆

## 题目描述

给定一个数列,初始为空,请支持下面三种操作:

1. 给定一个整数 x,请将 x 加入到数列中。
2. 输出数列中最小的数。
3. 删除数列中最小的数(如果有多个数最小,只删除 1 个)。

## 输入格式

第一行是一个整数,表示操作的次数 $n$。  
接下来 n 行,每行表示一次操作。每行首先有一个整数 op 表示操作类型。
- 若 op = 1,则后面有一个整数 $x$,表示要将 x 加入数列。
- 若 op = 2,则表示要求输出数列中的最小数。
- 若 op = 3,则表示删除数列中的最小数。如果有多个数最小,只删除 1 个。

## 输出格式

对于每个操作 2,输出一行一个整数表示答案。

样例输入 1

```
5
1 2
1 5
2
3
2
```

样例输出 1

```
2
5
```

#include 
#include 
#include 
using namespace std;
typedef long long ll;
const int N = 1e6 + 1;
ll n, idx, h[N];

void up(ll u) {
	while (u / 2 &a

你可能感兴趣的:(洛谷,算法)