单调队列是这样一种队列,不但队列中下标是递增的,队列中的值也是单调的(单调递增或dijian)
#include<stdio.h>
#include<string.h>
#include<queue>
#include<deque>
using namespace std;
struct P
{
int i;
int v;
P(int a,int b)
{
i=a;
v=b;
}
};
deque<P> q;
void PushMax(int i,int v)
{
while(!q.empty()&&q.back().v<v)
q.pop_back();
q.push_back(P(i,v));
}
int main()
{
int cas;
scanf("%d",&cas);
for(int T=1;T<=cas;T++)
{
int head=0;
int tail=0;
char cmd[100];
while(!q.empty()) q.pop_back();
scanf("%s",cmd);
while(scanf("%s",cmd)&&cmd[0]!='E')
{
if(cmd[0]=='C')
{
char name[50];
scanf("%s",name);
int tv;
scanf("%d",&tv);
PushMax(tail++,tv);
}
if(cmd[0]=='Q')
{
if(q.size()==0)
printf("-1\n");
else
printf("%d\n",q.front().v);
}
if(cmd[0]=='G')
{
if(q.front().i==head)
q.pop_front();
head++;
}
}
}
}
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。