您的位置:首页 > 其它

HDU 5347 多校赛1007 MZL's simple problem

2015-08-04 15:43 162 查看
[align=left]Problem Description[/align]

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)

 

[align=left]Input[/align]

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.

 

[align=left]Output[/align]

For each operation 3,output a line representing the answer.

 

[align=left]Sample Input[/align]

6
1 2
1 3
3
1 3
1 4
3

 

[align=left]Sample Output[/align]

3
4

#include <iostream>
#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <queue>
#include <stack>
#include <algorithm>
#define LL long long

using namespace std;

int main()
{
priority_queue<int, vector<int>, greater<int> >q;
int n;
scanf("%d",&n);
int ch,x;
int MAX;
while(n--)
{
scanf("%d",&ch);
if(ch == 1)
{
scanf("%d",&x);
if(q.size() == 0)
{
MAX = x;
q.push(x);
}
else
{
if(MAX < x)
MAX = x;
q.push(x);
}
}
else if(ch == 2)
{
if(q.size() == 0)
continue;
else
q.pop();
}
else
{
if(q.size() == 0)
printf("0\n");
else
printf("%d\n",MAX);
}
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: