2015 多校联赛 ——HDU5349(水)

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  ( N106 ),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<vector>
#include<cmath>
#include<queue>
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;
}




你可能感兴趣的:(HDU,2015联赛)