#755. 【提高】任务调度

【提高】任务调度

题目描述

一台超级计算机共有 NN 颗 CPU。现在这台超级计算机有 MM 个任务要做,但同时还要考虑到不能让 CPU 过热。所幸的是这台超级计算机已经将任务安排好了,现在要做的只是请你根据安排好的指令来模拟它的工作过程。

一开始,这 NN 颗 CPU 都没有被分配任何的任务。之后,会给你以下几类指令(CPU 的编号为 11NN 的整数,任务的编号为 11MM 的整数):

ADD n k w:将 kk 号任务(权值为 ww)分配给 nn 号 CPU

DEC n k w:将 kk 号任务的权值减少 ww(已知 kk 号任务被分配给了 nn 号 CPU)

TRANS n1 n2:将分配给 n1n_1 号 CPU 的任务全部转移给 n2n_2 号 CPU

MIN n:输出分配给 nn 号 CPU 的任务中权值最小的任务的权值

WORK n w: 将分配给 nn 号 CPU 的任务中权值最小的任务的权值加上 ww,如果权值最小的任务不唯一,则不更改权值,并输出一行 ERROR

输入格式

包含 N+1N+1 行。

11 行包含三个正整数 N,M,KN,M,K,分别表示 CPU 的数目、任务数和指令数。

22 行到 K+1K+1 行,每行包含一条指令。

输出格式

若干行,其中包括 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

提示

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

来源

  • BZOJ5179
  • JSOI2011 任务调度
  • 洛谷U104029