#include<stdio.h> #include<stdlib.h> #include<cstring> int queue[100001]; int N,M; int front,tail; void init() { front=0; tail=0; } int empty() { if (front==tail) return 1; else return 0; } int full() { if(front==(tail+1)%M) return 1; else return 0; } int push(int k) { if(!full()) { queue[tail]=k; tail=(tail+1)%M; return 1; } return 0; } int pop() { if(!empty()) { front=(front+1)%M; return 1; } return 0; } int query(int k,int &r) { if(k<1 || k>(tail-front+M)%M) return 0; else { r=queue[(front+k-1)%M]; return 1; } } int main() { int i,j,k; while(scanf("%d %d",&N,&M)!=EOF) { M++;////??????????为什么为什么加一 init(); char str[10]; for(i=0;i<N;i++) { scanf("%s",str); if (strcmp("Push",str)==0) { scanf("%d",&k); if(push(k)==0) printf("failed "); } else if(strcmp("Pop",str)==0) { if(pop()==0) printf("failed "); } else if(strcmp("Query",str)==0) { scanf("%d",&k); int rt; if(query(k,rt)==0) printf("failed "); else printf("%d ",rt); } else if(strcmp("Isempty",str)==0) { if(empty()==1) printf("yes "); else printf("no "); } else if(strcmp("Isfull",str)==0) { if(full()==1) printf("yes "); else printf("no "); } } } return 0; }