列表

详情


NC54282. GJX与进程调度

描述

GJX刚刚学完了操作系统的进程调度,他写了一个程序来模拟操作系统的进程调度。假设该系统只有一个CPU,每一个进程的到达时间,执行时间和优先级都是已知的。其中运行优先级用自然数表示,数字越大,则优先级越高。

如果一个进程到达的时候CPU是空闲的,则它会一直占用CPU直到该进程结束。除非在这个过程中,有一个比它优先级高的进程要运行。在这种情况下,这个优先级更高的进程会占用CPU,而优先级低的进程只有等待。

如果一个进程到达时,CPU正在处理一个比它优先级高或优先级相同的进程,则这个新到达的进程必须等待。

一旦CPU空闲,如果此时有进程在等待,则选择优先级最高的先运行。如果有多个优先级最高的进程,则选择到达时间最早的。

现在,GJX想考考你,他提出了q个询问,对于每个询问,请你回答在第k时间正在执行的进程的进程号是多少,如果此时没有正在执行的进程,请输出-1。

输入描述

第一行,两个正整数数n和q,表示进程总数与询问次数。

接下来n行,每一行有四个正整数(均不超过10^8),分别代表进程号,到达时间,执行时间和优先级。每个进程的进程号及到达时间均不相同。

接下来q行,每行1个数k,代表询问的第k时间(k不超过10^18)。

输出描述

q行,每行一个数。

示例1

输入:

3 4
1 1 5 1
2 3 6 3
3 11 4 2
3
9
12
15

输出:

2
1
3
1

说明:

第1时间,1号进程到达,此时有且仅有1号进程需要执行,第{1,2}时间执行1号进程。

第3时间,2号进程到达,优先级高于1号进程,抢占CPU,2号进程开始执行,第{3,4,5,6,7,8}时间执行2号进程。

第9时间,2号进程已经执行完毕,有且仅有1号进程需要执行,且1号进程已经执行了2个时间,还需要执行3个时间,第{9,10}时间执行1号进程。

第11时间,3号进程到达,优先级高于1号进程,抢占CPU,3号进程开始执行,第{11,12,13,14}时间执行3号进程。

第15时间,3号进程已经执行完毕,有且仅有1号进程需要执行,且1号进程已经执行了4个时间,还需要执行1个时间,第{15}时间执行1号进程。

示例2

输入:

3 6
1 1 1 1
2 3 1 3
3 11 1 2
4
3
1
12
10
11

输出:

-1
2
1
-1
-1
3

原站题解

上次编辑到这里,代码来自缓存 点击恢复默认模板

上一题