//题目提示用队列来解题,但是其实不用
//要的是一个数组储存优先值,优先值最大的元素使用后赋值为0,不必用队列来删除它
//循环直到 MyJobPosition 成为优先值最大的元素,使用它,然后退出循环,打印time
//
#include<iostream>
#include<queue>
using namespace std;
const int maxn=105;
int jobs[maxn];
int main (){
int c;
cin>>c;
while(c--){
int num,mjpos,flag,time=0;
cin>>num>>mjpos;
for(int i=0;i<num;i++)
cin>>jobs[i];
for(int i=0;;i++){
if(i==num) /*如果循环到数组边界了,从头再来*/
i=0;
flag=1;
for(int j=i+1;j!=i;j++)
{
if(j==num)
{
j=-1;
continue; /*循环查找是否为优先值最大的元素*/
}
if(jobs[j]>jobs[i])
{flag=0;break;}
}
if(flag)
{
time++;
jobs[i]=0;
if(i==mjpos)
break;
}
}
cout<<time<<endl;
}
return 0;
}
题目链接:http://poj.org/problem?id=3125