题目大意:有N个任务,如果当前这个任务后面有其他的任务比当前任务的优先级大的话,就把当前这个任务调到最后面,每次执行一个任务需要1分钟,现在问什么时候任务m可以执行完
解题思路:用数组模拟,一直遍历找最大值进行执行,直到任务m执行
#include<cstdio>
#define maxn 105
int q[maxn * maxn], n, m;
int ans() {
int front = 0, rear = n;
int cnt = 0;
while(1) {
int Max = q[front];
for(int i = front; i < rear; i++) {
if(q[i] > Max) {
Max = q[i];
while(q[front] < Max) {
if(front == m)
m = rear;
q[rear++] = q[front++];
}
}
else if(i == rear - 1){
cnt++;
if(front == m)
return cnt;
front++;
}
}
}
}
int main() {
int test;
scanf("%d", &test);
while(test--) {
scanf("%d%d", &n, &m);
for(int i = 0; i < n; i++)
scanf("%d", &q[i]);
printf("%d\n", ans());
}
return 0;
}