问题 C: 4.4.4 打印队列

内存限制:128 MB 时间限制:1.000 S
评测方式:文本比较 命题人:
提交:224 解决:227

题目描述

有一些文件需要打印机打印,每个打印任务有1-9的优先级,优先级越高表示任务越急。打印机的运作方式为:首先从打印队列里取出一个任务J,如果队列里有比J更急的任务,则直接把任务放到打印 队列的尾部,否则打印任务J。输入打印队列中各个任务的优先级以你的任务在队列中的位置(队首位置为0)。输出该任务完成的时刻,所有任务都需要1分钟的打印时间。 例如,打印队列为{1,1,9,1,1,1},目前处于队首的任务最终完成时刻为5。以第三个样例为例,询问下标为0的打印时间,1 1 9 1 1 1中1有比他优先级高的,则把它放到队列末尾,变成1 9 1 1 1 1 同理变成 9 1 1 1 1 1,9取出直接打印 变为1 1 1 1 1,在依次打印即可,最后时间为5。

输入

输入:第一行为测试样例数T,每个样例第一行包括n(1<=n<=100)和m(0<=m<=n-1),其中n为打印任务数,m为你的任务序号(从0开始编号),第二行为n个数,为n个打印任务的优先级。

输出

对于每个测试用例,都单行输出你的作业任务打印完成的分钟数。

样例输入 复制

3 
1 0
5
4 2
1 2 3 4
6 0
1 1 9 1 1 1

样例输出 复制

1
2
5

来源/分类