SOJ 1443.Printer Queue

来源:互联网 发布:东软医保软件客服 编辑:程序博客网 时间:2024/05/18 00:14

简单题多思考

(多读书,多看报,少吃零食,多睡觉)

#include<iostream>#include<cstring>#include<cstdio>#include<queue>using namespace std;struct node{    int pos;    int pr;    node(int p1,int p2):pos(p1),pr(p2){}};int main(){    int t,n,m,tmp;    int flag[10];    scanf("%d",&t);    while(t--){        queue<node> que;        memset(flag,0,sizeof(flag));        scanf("%d%d",&n,&m);        for(int i=0;i<n;i++){            scanf("%d",&tmp);            flag[tmp]++;            que.push(node(i,tmp));        }        int res=0,ans;        for(int i=9;i>0;i--){            if(flag[i]==0) continue;            while(1){                if(flag[i]==0) break ;                if(que.front().pos==m)                    ans = res+1;                if(que.front().pr==i){                    que.pop();                    res++;                    flag[i]--;                }else{                    que.push(que.front());                    que.pop();                }            }        }        printf("%d\n",ans);    }    return 0;}