您的位置:首页 > 大数据 > 人工智能

2015 Multi-University Training Contest 5 hdu 5349 MZL's simple problem

2015-08-05 14:19 495 查看

MZL's simple problem

Time Limit: 3000/1500 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)
Total Submission(s): 740 Accepted Submission(s): 357


[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

[align=left]Source[/align]
2015 Multi-University Training Contest 5

解题:由于我们只需要查询最大值,所以最大值总是最后一个被删的,如果当前集合只有一个元素,那么肯定是删最大的元素了,否则,随便删就是了,不影响最大值

#include <bits/stdc++.h>
using namespace std;
int main() {
int n,op,val;
while(~scanf("%d",&n)) {
int sz = 0,maxval = INT_MIN;
while(n--) {
scanf("%d",&op);
switch(op) {
case 1:
scanf("%d",&val);
maxval = max(val,maxval);
sz++;
break;
case 2:
sz = max(0,sz-1);
if(!sz) maxval = INT_MIN;
break;
case 3:
printf("%d\n",sz?maxval:0);
break;
default:
;
}
}
}
return 0;
}


View Code
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: