原题:http://acm.fzu.edu.cn/problem.php?pid=1894
直接贴代码了……
#include<stdio.h>
#include<string.h>
#include<string>
#include<iostream>
using namespace std;
#define N 1000100
struct node
{
int loc,val;
}que[N];
int main()
{
int cas,begin,end,k,k1,cnt;
char s1[10],str[10];
node cc;
scanf("%d",&cas);
while(cas--)
{
scanf("%s",s1);
begin=0; end=-1; k=0; k1=0;
memset(que,0,sizeof(que));
while(scanf("%s",str)&&str[0]!='E')
{
if(str[0]=='C')
{
scanf("%s",s1);
scanf("%d",&cnt);
cc.val=cnt; cc.loc=k++;
while(begin<=end&&que[end].val<cnt)
end--;
que[++end]=cc;
}
else
{
if(str[0]=='G')
{
while(begin<=end&&que[begin].loc<=k1)
begin++;
k1++;
}
else
printf("%d\n",begin>end? -1: que[begin].val);
}
}
}
return 0;
}