hdu - 5349 MZL's simple problem(解题报告)

来源:互联网 发布:sql check约束 编辑:程序博客网 时间:2024/06/15 18:24

A - MZL's simple problem
Time Limit:1500MS     Memory Limit:65536KB     64bit IO Format:%I64d & %I64u
Submit Status

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$ ($N\leq 10^6$),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 $10^9$.
 

Output

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

Sample Input

61 21 331 31 43
 

Sample Output

34
 

题意:

    给你n行,若以1为开头,则输入一个数入队列,2就删除队列中最小的数,3就输出队列中最大的数。

题解:

    开个max记录出现的最大的数,开个num记录现在一共有多少个数在队列中,因为删除到最后才会删掉最大的数,所以每次删除就让num--。max的初值赋为负无穷。

参考代码:

#include<stdio.h>#define inf 999999999int main(){int n,x,a,max,num;while(~scanf("%d",&n)){max=-inf;num=0;while(n--){scanf("%d",&x);if(x==1){    scanf("%d",&a);    num++;    if(max<a)                    max=a;}            if(x==2)            {            if(num)                num--;            if(!num)                 max=-inf;            }            if(x==3)            {            if(!num)                printf("0\n");            else                printf("%d\n",max);            }          }}return 0;}



0 0