MZL's simple problem
Time Limit: 3000/1500 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total Submission(s): 904 Accepted Submission(s): 431
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)
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 .
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
Source
简单题,直接模拟即可
#include<iostream>
#include<set>
#include<cstdio>
#include<cstring>
#include<cstdio>
using namespace std;
multiset<int> haha;
multiset<int>::iterator it;
int main(){
int n;
while(scanf("%d",&n)!=EOF){
int p,u;
haha.clear();
int ans ;
while(n--){
scanf("%d",&p);
if(p == 1) {
scanf("%d",&u);
haha.insert(u);
}
else if(p == 2){
if(haha.size() > 0){
haha.erase(haha.begin());
}
}
else if(p==3){
ans = 0;
if(haha.size() > 0){
it = haha.end();
it--;
ans = *it;
}
printf("%d\n",ans);
}
}
}
return 0;
}