给你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;
}