天天看点

HDU 5349 MZL's simple problem

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

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<cstdio>
#include<cstring>
#include<algorithm>
#include<iostream>
#include<string>
#include<cmath>
#include<queue>
#include<vector>
#include<map>
#include<set>
using namespace std;
const int maxn = 60505;
int a, b, T, x;

int main()
{
  scanf("%d", &T);
  a = -0x7FFFFFFF; b = 0;
  while (T--)
  {
    scanf("%d", &x);
    if (x == 1) 
    { 
      scanf("%d", &x);  
      if (x > a) a = x; 
      b++;
    }
    else if (x == 2) { 
      if (b) b--;
      if (!b) a = -0x7FFFFFFF;
    }
    else printf("%d\n", b ? a : b);
  }
  return 0;
}