2470 schedule
Time Limit : 20000/10000 MS(Java/Others) | Memory Limit : 131072/65536 KB(Java/Others)
Submits : 44 | Solved : 1
Description
学过《操作系统》课程的同学都知道进程调度算法。如果你是学霸,那么你肯定能说出所有的调度算法,如果你是学渣,那么你是不是连进程调度算法是什么都忘啦。玩笑开完了,进入正题。。。
这是一个进程调度系统,采用的是优先度调度算法。可以这样理解,一个进程队列有n个进程(默认1<=pid<=n),每个进程有一个优先度Ai+Bi*t(t为时间)。随着时间的推进,然后CPU会在某个时刻Ti发出请求,要求取一个进程进入CPU,要求这个进程是在Ti时间剩余进程中优先度Ai+Bi*Ti最小的(如果优先度相等取pid更小的)。进程进入CPU后就不会再返回进程队列,进程队列的进程个数相应减少一个。因为有n个进程,CPU会发出n个Ti时刻的请求。
你能为这个调度算法编写一份代码吗,要求输出每个时刻Ti取的进程的pid。
Input
输入包括多组数据。第一行一个整数n(1<=n<=700000),代表进程个数。接着n行,pid依次为1到n,每行2个整数Ai,Bi(0<=Ai,Bi<=2^31-1)
Output
对于每组数据,输出一个序列,代表CPU依次取的进程pid,每个pid之间用空格隔开,没有多余的空格在最后。
Sample Input
5
1 4
2 3
3 5
4 1
5 2
1 2 3 4 5
Sample Output
1 4 2 5 3
HINT
Source
NBU OJ
[ Top ] | [ Submit ] | [ Statistics ] | [ Standing ]