标签:想法题
给你n行,若以1为开头,则输入一个数入队列,2就删除队列中最小的数,3就输出队列中最大的数。
题解:
开个max记录出现的最大的数,开个num记录现在一共有多少个数在队列中,因为删除到最后才会删掉最大的数,所以每次删除就让num--。max的初值赋为负无穷。
参考代码:
#include<stdio.h>
#define inf 999999999
int 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;
}
版权声明:本文为博主原创文章,随便转载。
hdu - 5349 MZL's simple problem(解题报告)
标签:想法题
原文地址:http://blog.csdn.net/luwhere/article/details/47356743