很简单的模拟,却被我做的很复杂。。其实做一个队列按照题目说明来循环就可以了
//memory 208k
//time 16MS
#include <iostream>
using namespace std;
int main()
{
//freopen("1.in","r",stdin);
//freopen("out.txt","w",stdout);
int cas,i,j,k,n,m,num;
int s[105],t[105];
cin>>cas;
while(cas--)
{
int sum=0;
cin>>n>>m;
for(i=0;i<n;i++)
{
cin>>s[i];
t[i]=s[i];
}
num=s[m];
k=n;
for(j=9;j>num;j--)
{
n=k;
int q;
for(i=n-1;i>=0;i--)
if(s[i]==j)
{
sum++;
if(m>i)
m-=i+1;
else
m+=n-i-1;
q=m;
for(k=0;k<n-i-1;k++)
t[k]=s[k+i+1];
for(int p=0;p<i;p++)
{
if(s[p]==j)
{
sum++;
if(p+n-i-1<q)
m--;
}
else
t[k++]=s[p];
}
break;
}
for(i=0;i<k;i++)
s[i]=t[i];
}
for(i=0;i<=m;i++)
if(s[i]==num)
sum++;
cout<<sum<<endl;
}
return 0;
}