题目大意:
让你根据队列中的优先级 ,如果队伍中有 优先级高于队头的,则将队头放到队尾。 若没有,则打印,时间+1. 计算最后打印要完成的任务m时,所需的时间
用数组进行模拟,不知道第一次为什么会TLE. 可能是用了struct 。但我觉得应该没影响 。难道是一开始用了cin ?
time 16ms
#include <iostream>
#include <memory.h>
#include <stdio.h>
using namespace std;
const int N=105;
int pri[N];
int pos[N];
int main()
{
int t,n,m,i,j,v;
scanf("%d",&t);
while(t--)
{
scanf("%d%d",&n,&m);
int f=0,r=n,time=0;
memset(pos,0,sizeof(pos));
pos[m]=-1;
for(i=0;i<n;i++)
{
scanf("%d",&v);
pri[i]=v;
}
while(f!=r)
{
for(i=f+1;i!=r;i++)
{
if(pri[f]<pri[i])
{
pri[r]=pri[f];
pos[r]=pos[f];
f=(f+1)%N;
r=(r+1)%N;
break;
}
}
if(i==r)
{
time++;
if(pos[f]==-1)
break;
f=(f+1)%N;
}
}
cout<<time<<endl;
}
}