并行程序模拟

题目内容

题目描述

你的任务是模拟n个程序(按输入顺序编号为1~n)的并行执行。每个程序包含不超过25条语句,格式一共有5种:var = constant(赋值);print var(打印);lock;unlock;end。

变量var用单个小写字母表示,初始为0,为所有程序公有(因此在一个程序里对某个变量赋值可能会影响另一个程序)。常数constant是小于100的非负整数。


每个时刻只能有一个程序处于运行态,其他程序均处于等待态。5种语句分别需要t1、t2、t3、t4、t5单位时间。运行态的程序每次最多运行Q个单位时间(称为配额)。当一个程序的配额用完之后,把当前语句(如果存在)执行完之后该程序会被插入一个等待队列中,然后处理器从队首取出一个程序继续执行。初始等待队列包含按输入顺序排列的各个程序,但由于lock/unlock语句的出现,这个顺序可能会改变。

lock的作用是申请对所有变量的独占访问。lock和unlock总是成对出现,并且不会嵌套。lock总是在unlock的前面。当一个程序成功执行完lock指令之后,其他程序一旦试图执行lock指令,就会马上被放到一个阻止队列的尾部(没有用完的配额就浪费了)。当unlock执行完毕后,阻止队列的第一个程序进入等待队列的首部。


输入n,t1,t2,t3,t4,t5,Q以及n个程序,按照时间顺序输出所有print语句的程序编号和结果。

输入描述

第一行7个整数,分别是n,t1,t2,t3,t4,t5,Q,接下来有n个程序,每行一个语句,语句中变量为单个小写字母,常数为小于100的非负整数,每个程序以end结束。

输出描述

每行两个整数,分别是print语句的程序编号和结果。

样例输入

3 2 2 1 1 3 5 a = 1 b = 2 lock c = 3 print b unlock print c end b = 23 a = 6 lock print a print b unlock end c = 11 lock a = 17 print a unlock print c end

样例输出

1 23 2 6 2 23 1 3 3 17 3 3

提示

提交评测
请登录后再操作

题目描述

并行程序模拟
1071
0
Level1
84
44
52%
证书查询 x
请输入证书编号:

请输入正确的证书编号

学员姓名:孙兴民

课程:Scratch Level 1

发证日期:2019.08.15

证书查询

该证书不存在