打印机队列

题目内容

题目描述

“编玩边学”唯一的打印机正经历着极其繁重的工作量。有时在打印机队列中有100个作业,您可能需要等待数小时才能得到目标作业的输出。
因为有些工作比其他工作更重要,我们发明并实现了打印作业队列的简单优先级系统。现在,每个作业被分配优先级在1和9之间(9是最高优先级),1是最低的,打印机运行如下:
队列中的第一个作业j是从队列中取出的。
如果队列中的某些作业具有比j更高的优先级,则将j移到队列的末尾而不打印它。否则,打印作业j(并且不要把它放回队列中)。
为了简化问题,我们假设打印一个作业总是需要一分钟,并且从队列中添加和删除作业是即时的,你的任务是计算直到目标作业被打印完成需要花费多少时间。

输入描述

输入分别为两个整数n和m。其中n是队列中的作业数(1n100),m是目标作业的位置(0mn-1)。队列中的第一个位置是第0个,第二个位置是第1个,等等。
随后一行是在1到9范围内的n个整数,给出队列中作业的优先级。第一个整数给出第一个作业的优先级,第二个整数是第二个作业的优先级,等等。

输出描述

输出一个整数,表示直到完成打印目标作业的分钟数。

样例输入

4 2 1 2 3 4

样例输出

2

提示

将所有作业入队,用max变量保存优先级最大的作业,m保存目标作业的位置。每次循环时,判断当前作业是否优先级是否为max,若是则分钟数+1并且队首指针上移一个,同时判断是否为目标作业,若是则退出循环。如果当前作业的优先级不是max,则将其移动到队尾,同时判断是否为目标作业,若是则更新m的位置为队尾。每次循环结束时,重新查找队列中优先级最高的数,赋给max。循环结束后,输出分钟数。
提交评测
请登录后再操作

题目描述

打印机队列
1446
0
0
0
0%
证书查询 x
请输入证书编号:

请输入正确的证书编号

学员姓名:孙兴民

课程:Scratch Level 1

发证日期:2019.08.15

证书查询

该证书不存在