#46. Multiset

Multiset

问题描述

你需要实现一个可删除的大根堆,给定 qq 组查询,每组查询的操作为其中一种:

  • 1 x:插入一个整数 xx 进入大根堆中。
  • 2 x:输出大根堆中 xx 的个数。
  • 3 x:删除一个大根堆中值为 xx 的数。
  • 4 x:删除大根堆中值为 xx 的所有的数。
  • 5:输出大根堆中元素数量。
  • 6:输出堆顶元素,如果堆为空则输出 null
  • 7:删除堆顶元素。

输入格式

第一行输入一个 qq,表示查询数量。(1q2×105)(1\le q\le 2\times 10^5)

接下来 qq 行,每行输入一组操作。

  • 1 x:插入一个整数 xx 进入大根堆中。
  • 2 x:输出大根堆中 xx 的个数。
  • 3 x:删除一个大根堆中值为 xx 的数。
  • 4 x:删除大根堆中值为 xx 的所有的数。
  • 5:输出大根堆中元素数量。
  • 6:输出堆顶元素,如果堆为空则输出 null
  • 7:删除堆顶元素。

对于 141\sim 4 组操作,1x501\le x\le 50

输出格式

对于 2,5,62,5,6 三种操作做出输出并换行,对于删除操作,若此时大根堆无法满足该操作,则不进行操作。

样例输入

15
1 3
2 3
1 4
2 4
1 3
5
6
4 3
5
2 4
2 3
1 3
3 3
7
5

样例输出

1
1
3
4
1
1
0
0