题意:打印东西 首先打印的是数值最大的,问指定打印的之前打印了多少的。
代码:
#include <stdio.h> #include <stdlib.h> #define max 120 struct type { int num; int bools; }; typedef struct { type base[max]; int front; int rear; }squeue; void intiqueue (squeue &q) { q.front=q.rear=0; } void enqueue(squeue &q,type e) { q.base[q.rear]=e; q.rear=(q.rear + 1) %max; } type dequeue(squeue &q) { type e; e = q.base[q.front]; q.front = (q.front + 1) % max; return e; } int main() { int cishu,geshu,i; int weishu; int temp; int sum; type e; squeue Q; scanf("%d",&cishu); while(cishu--) { intiqueue (Q); sum=0; scanf("%d%d",&geshu,&weishu); for(i = 0;i < geshu; i++) { scanf("%d",&e.num); if(i==weishu) e.bools=1; else e.bools=0; enqueue(Q,e); } geshu--; for(;;) { temp=0; e=dequeue(Q); int x=Q.front; for(i=0;i<geshu;i++) { if(Q.base[x].num>e.num) { temp=1; break; } else x = (x+1) % max; } if(temp==1) { enqueue(Q,e); } else { geshu--; sum++; if(e.bools==1) break; } } printf("%d/n",sum); } return 0; }