我并没有多想,他们是用的数组模拟队列,然而我就是优化循环次数过得
#include<iostream> #include<cstdio> #include<cstring> #include<algorithm> using namespace std; int node[1000010]; int main() { int t; scanf("%d",&t); while(t--) { char op[20],name[20]; int all = 0,s = 0,max = -99,maxid = 0; while(~scanf("%s",op)) { if(op[0] == 'S') continue; if(op[0] == 'C') { scanf("%s",name); scanf("%d",&node[all]); if(node[all] > max) { max = node[all]; maxid = all; } ++all; } else if(op[0] == 'G') s++; else if(op[0] == 'Q') { if(s > all) { puts("-1"); continue; } if(s < maxid) { printf("%d ",max); continue; } max = -99; for(int i = s;i < all;i++) { if(node[i] > max) { max = node[i]; maxid = i; } } if(max == -99) { puts("-1"); continue; } printf("%d ",max); } else break; } } return 0; }