SP1840 PQUEUE - Printer Queue
题目描述
计算机科学学生会唯一的打印机正经历着极其繁重的工作。有时,打印机队列中有 $100$ 个任务,您可能需要等待数小时才能获得一页输出。
因为有些任务比其他任务更重要,所以 Hacker General 为打印任务队列发明并实现了一个简单的优先级系统。现在,为每个任务分配了 $1$ 到 $9$ 之间的优先级($9$ 为最高优先级,$1$ 为最低优先级),打印机的操作如下。
队列中的第一个任务 $J$ 从队列中取出。
如果队列中有某个任务的优先级高于任务 $J$,那么将 $J$ 移到队列的末尾,而不打印它。
否则,打印任务 $J$(不要将其放回队列)。
通过这种方式,Hacker General 正在打印的所有重要的松饼食谱都能很快打印出来。当然,别人打印的那些烦人的学期论文可能要等很长一段时间才能打印出来,但这就是生活。
新策略的问题在于,确定打印任务实际完成的时间变得相当棘手。你决定写一个程序来解决这个问题。程序将获得当前队列(作为优先级列表)以及您的任务在队列中的位置,然后必须计算您的任务打印之前需要多长时间,假设没有其他任务将添加到队列中。为了简化问题,我们假设打印任务总是只需要一分钟,并且从队列中添加和删除任务是即时的。
输入格式
一行是正整数:测试用例的数量(最多 $100$ 个)。然后对于每个测试用例:
一行有两个整数 $n$ 和 $m$,其中 $n$ 是队列中任务的数量($1 \le n \le 100$),$m$ 是任务的位置($0 \le m \le n-1$)。队列中的第一个位置是 $0$ 号,第二个是 $1$ 号,依此类推。
一行有 $n$ 个整数,范围在 $1$ 到 $9$ 之间,表示队列中任务的优先级。每个整数表示对应任务的优先级。
输出格式
对于每个测试用例,输出一行带有一个整数;在没有其他打印任务到达的情况下,任务完成打印所需的分钟数。