POJ 3125 Printer Queue
单纯用数组模拟队列水过了,,没什么好说的。。题目理解了就很好写
#include <stdio.h>
#include <string.h>
int t;
int n, m;
int q[205];
int find_max_v()
{
int max = q[0];
int max_v = 0;
for (int i = 0; i < n; i ++)
{
if (q[i] > max)
{
max = q[i];
max_v = i;
}
}
return max_v;
}
void tra()
{
int v = find_max_v();
for (int i = 0; i < v; i ++)
{
q[n + i] = q[i];
}
for (int i = v + 1; i < n + v; i ++)
{
q[i - v - 1] = q[i];
}
m -= v;
if (m < 0)
{
m += n;
}
n --;
m --;
}
int main()
{
scanf("%d", &t);
while (t --)
{
int time = 0;
scanf("%d%d", &n, &m);
for (int i = 0; i < n; i ++)
{
scanf("%d", &q[i]);
}
while (m != -1)
{
tra();
time ++;
}
printf("%d\n", time);
}
return 0;
}