#E756. 【提高】任务调度

【提高】任务调度

说明

一台超级计算机共有N颗CPU。现在这台超级计算机有M个任务要做,但同时还要考虑到不能让CPU过热。所幸的是这台超级计算机已经将任务安排好了,现在要做的只是请你根据安排好的指令来模拟它的工作过程。一开始,这N颗CPU都没有被分配任何的任务。之后,会给你以下几类指令(CPU的编号为1到N的整数,任务的编号为1到M的整数)

指令格式     作用

ADD n k w    将 k 号任务(权值为 w)分配给 n 号 CPU
DEC n k w    将 k 号任务的权值减少 w(已知 k 号任务被分配给了 n 号 CPU)
TRANS n1 n2  将分配给 n1 号 CPU 的任务全部转移给 n2 号 CPU
MIN n        输出分配给 n 号 CPU 的任务中权值最小的任务的权值
WORK n w     将分配给 n 号 CPU 的任务中权值最小的任务的权值加上 w,
如果权值最小的任务不唯一,则不更改权值,并输出一行“ ERROR”

输入格式

包含N+1行。
第1行包含三个正整数N、M、K,分别表示CPU的数目、任务数和指令数。
第2行到N+1行,每行包含一条指令。
N≤500, M≤300000, K≤300000。
保证任务的权值在 32 位有符号整型的范围内。
保证一个任务只会被分配一次(即至多被 ADD 一次)。
保证 ADD 指令、DEC 指令和 WORK 指令中的 w 是非负整数。
保证 TRANS 指令的两个参数不相同。
 

输出格式

若干行,其中包括MIN语句的输出和“ERROR”输出,每个输出占一行

样例

2 3 13
ADD 1 2 100
ADD 1 1 90
MIN 1
WORK 1 20
TRANS 1 2
MIN 2
ADD 1 3 105
TRANS 2 1
MIN 1
DEC 1 3 200
MIN 1
DEC 1 1 205
WORK 1 15
90
100
100
-95
ERROR

提示

对于全部的数据,N≤150,M≤80000,K≤100000。
保证任务的权值在32 位有符号整型的范围内。
保证一个任务只会被分配一次(即至多被ADD 一次)。
保证ADD 指令、DEC 指令和WORK 指令中的w 是非负整数。
保证TRANS 指令的两个参数不相同。