UVa12100

来源:互联网 发布:南风知我意txt免费下载 编辑:程序博客网 时间:2024/05/17 17:42
/*
关键是理解题意,如果当前取出的任务不是优先级最高的,那么就把该任务放在队列最后
注意,此时是不会打印优先级最高的任务,也不会消耗时间
*/
#include<cstdio>
#include<iostream>
#include<algorithm>
#include<string>
#include<vector>
#include<set>
#include<string.h>
#include<math.h>
#include<queue>
using namespace  std;
int main(){
    int T,n,m,x,target;
    scanf("%d",&T);
    while(T--){
        queue<int>Q;
        priority_queue<int>PQ;
        scanf("%d%d",&n,&m);
        for(int i=0;i<n;++i){
            scanf("%d",&x);
            Q.push(x);
            PQ.push(x);
            if(i==m)target=x;
        }
        int t=0;
        while(!PQ.empty()&&PQ.top()>=target){
            while(Q.front()!=PQ.top()){
                Q.push(Q.front());
                Q.pop();
                m=m==0?Q.size()-1:m-1;
            }
            Q.pop();PQ.pop();
            ++t,--m;
            if(m<0)break;
        }
        printf("%d\n",t);
    }
}