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)
Next NN line ,each line contains one or two numbers,describe one operation.
The number in this set is not greater than 109109.OutputFor each operation 3,output a line representing the answer.Sample Input
6 1 2 1 3 3 1 3 1 4 3Sample Output
3
4
这题TLE了很多次,一直不明白为什么,到后来才发现是因为输出用了cout,这题还要注意,因为这是集合,所以里面的元素是不能重复的
#include <cstdio>
#include <iostream>
#include <set>
using namespace std;
typedef long long ll;
const int inf = 1e6 +10;
set<int>s;
int main()
{
int num;
scanf("%d", &num);
while(num --){
int way;
scanf("%d", &way);
if(way == 1){
int val;
scanf("%d", &val);
s.insert(val);
}else if(way == 2){
if(!s.empty()){
s.erase(s.begin());
}
}else {
if(!s.empty()){
set<int>::iterator it = s.end();
it --;
printf("%d\n", *it);
}else {
printf("0\n");
}
}
}
return 0;
}