Problem Description
A simple problem Problem Description You have a multiple set,and now there are three kinds of operations: 1 x : add number x to set 2 : delete the minimum number (if the set is empty now,then ignore it) 3 : query the maximum number (if the set is empty now,the answer is 0)
Input
The first line contains a number N ( N≤106),representing the number of operations. Next N line ,each line contains one or two numbers,describe one operation. The number in this set is not greater than 109.
Output
For each operation 3,output a line representing the answer.
Sample Input
6 1 2 1 3 3 1 3 1 4 3
Sample Output
3 4
三个操作,删除最小,查询最大,插入
#include#include #include #include #include #include typedef long long ll;using namespace std;int main(){ int n; while(scanf("%d",&n)==1) { int x; ll q, tmax = -1000000100; int sum = 0; for(int i = 1; i <= n; i++) { scanf("%d",&x); if(sum==0) tmax = -1000000100; if(x == 1) { scanf("%I64d",&q); if(q >= tmax) tmax = q; sum++; } if(x == 2) { if(sum>0) sum--; } if(x == 3) { if(sum>0) printf("%I64d\n",tmax); else printf("0\n"); } } } return 0;}