这题从题目可看出就是到队列的题目 ,他要打印出其中某位置的出去时刻,那就一直模拟,到那个位置出来就行,因为其从大到小出来,咱们先排个序,确定其出来的顺序,然后一个一个出来就好啦,如果遇到对的人,ok,任务完成
代码如下
#include <bits/stdc++.h>
using namespace std;
struct stu{
int biao;
int zhi;
}q;
queue <stu> que;
int main()
{
int t;
scanf("%d",&t);
while(t--)
{
while(!que.empty()) que.pop();//清空
int n,m,chu[200]={0},i; //chu表示数出去的顺序
scanf("%d%d",&n,&m);
for ( i = 0; i < n; i++)
{
scanf("%d",&chu[i]);
q.biao = i; q.zhi = chu[i];
que.push(q);
}
sort (chu,chu+n, greater<int>() ); //从大到小
i = 0;
while (i < n)
{
while((que.front()).zhi != chu[i]) //找到出去的人,不是排后面
{
q = que.front(); que.pop(); que.push(q);
}
q = que.front(); que.pop();
if(q.biao == m) //找到出去人,输出其时刻
{
printf("%d\n",i+1);
break;
}
i++;
}
}
return 0;
}