HDU 5349

来源:互联网 发布:英国留学打工 知乎 编辑:程序博客网 时间:2024/06/04 00:33

MZL's simple problem

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


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
61 21 331 31 43
 

Sample Output
34
 

Source
2015 Multi-University Training Contest 5

 

开个map就好了。

#include <iostream>#include <algorithm>#include <stdio.h>#include <string.h>#include <math.h>#include <map>#define M 100010using namespace std;map<__int64, __int64>mp;std::map<__int64, __int64>::iterator it;int main(){    __int64 n;    while (scanf("%I64d", &n) != EOF)    {        __int64 op, a;        mp.clear();        for (int i = 0; i < n; i++)        {            scanf("%I64d", &op);            if (op == 1)            {                scanf("%I64d", &a);                mp[a]++;            }            else if (op == 2)            {                if (mp.size() == 0)                    continue;                it = mp.begin();                int t = it->first;                mp[t]--;                if (mp[t] == 0)                mp.erase(it);            }            else            {                if (mp.size() == 0)                    printf("0\n");                else                {                    it = mp.end();                    it--;                    printf("%I64d\n", it->first);                }            }        }    }    return 0;}

0 0
原创粉丝点击