# 队列

# 题目:并行程序模拟

给定 n 个程序,每种程序有五种操作,分别为 var = constant (赋值),print var (打印), lock, unlock,end。变量用小写字母表示,初始化为 0,为程序所公有(一个程序里对某个变量修改可以会影响其他程序里的这个变量),常数小于 100(也就是说最多两位数)。
每个时刻都只能有一个程序处于运行状态,其他的都在等待,上述五种操作用时分别是 t1, t2, t3, t4, t5。运行中的程序,
每次最多能运行 q 个时间,当 q 个时间被用完后,它会被放在等待队列的尾部,然后再从首部取出一个程序运行,初始等待队列按输入顺序,但是 lock 和 unlock 会改变顺序,它们总是成对出现,不会出现嵌套。如果某个程序已经执行了 lock,后面还有程序执行 lock,那么这个程序就会马上被放到一个阻止队列的尾部(当然如果运行时间还没用完也就浪费了)。当 unlock 结束后,阻止队列中的第一个程序进入等待队列的首部。
输入 n, t1, t2, t3, t4, t5,Q 以及 n 个程序,按照时间顺序输出所以 print 语句的程序编号和结果。

提示:用双端队列 deque 模拟 “等待队列”,用队列 queue 模拟 “阻止队列”。

# 分析

更新于