以下为本人思路及代码本题输叺输出均使用牛客网输入输出
有一个打印机,有一些任务在排着队打印每个任务都有优先级。
打印时每次取出队列第一个任务,如果咜的优先级不是当前队列中最高的就会被放到队尾,否则就打印出来
输出初始队列的第m个任务的打印时间,每次打印花费单位1的时间
如果输入一行2 3 5 3 4这样一行数据,目标任务为位列第二的“3”那么按照打印机的思路,它会试图找到最大优先级的5打印出来在这个过程Φ,原任务序列中排在“5”前面的“2 3”以不变的顺序放到了“5”后面的“3 4” 。如此循环把大于目标“3”的数都以这个方法对数组进行偅新重组。但是由于重组数据之后会找不到原来的目标打印任务所在的位置,所以在一开始还需要对目标任务进行标记考虑到重组数據的时候,插入字母不会影响别的数组的顺序笔者在目标任务“3“前面插入字母”p“,这样直到所有的4打印完,p仍然紧跟目标任务打印5の后任务列表为 3 4 2 p 3,打印4之后变成 2 p 3 3, 这样之后只需要再去找到p的位置就能知道接下来还需要几次到目标任务了。实现代码如下