#P1793. Storehouse

Storehouse

本题没有可用的提交语言。

问题描述

Advanced Cargo Movement有限公司拥有一个大型仓库,里面存储着各种货物。仓库有有限数量的装卸区(bays),卡车可以在这里装载货物。每天,卡车来到装卸区,装载货物(每辆卡车只装载一种类型的货物),然后前往商店。为了加快装载速度,仓库管理员会提前将货物移动到装卸区。由于每次装载的具体货物数量未知,管理员必须准备比需求更多的货物,剩余货物会被送回仓库。因此,如果下一辆卡车装载的货物与前一辆相同,这将非常有用,因为它避免了不必要的货物移动。卡车的容量远小于装卸区的容量,因此只要卡车装载相同类型的货物,任意数量的卡车都可以在一个装卸区进行装载,而无需重新装货。

你的任务是组织哪种货物应准备在哪个装卸区,以使仓库管理员需要将未装载的货物移回仓库的次数尽可能少。每天开始时,所有装卸区都没有准备任何货物。当天结束时留在装卸区的货物不计入移动次数。

输入格式

第一行输入测试用例的数量。每个测试用例的第一行包含三个整数BBGGNN1B10001 \leq B \leq 10001G1,000,0001 \leq G \leq 1,000,0001N1,000,0001 \leq N \leq 1,000,000,用空格分隔。BB是仓库中装卸区的数量,GG是仓库中货物类型的数量,NN是当天到达仓库的卡车数量。接下来的NN行,每行包含一个数字tit_i1tiG1 \leq t_i \leq G,表示第ii辆卡车需要装载的货物类型。

输出格式

对于每个测试用例,程序应首先输出一行"Case X:",其中XX是从1开始的用例编号。接着输出NN行,每行对应一辆卡车的处理结果:

  • "NO ACTION" —— 如果无需任何操作(即第ii辆卡车要装载的货物已经在某个装卸区)。
  • "LOAD b g" —— 如果需要在第ii辆卡车到达前将货物gg移动到装卸区bb。装卸区bb当前存放的货物会被自动移回仓库。

每次卡车到达时,必须确保其要装载的货物已准备在某个装卸区。假设每辆卡车在下一辆到达前已离开装卸区,即同一时间只服务一辆卡车。

"LOAD"操作的次数应尽可能少。如果有多个解决方案的操作次数相同,可以输出其中任意一个。不同测试用例的输出之间用空行分隔。

示例输入1

2
2 4 5
1
2
1
4
1
3 3 3
1
3
2

示例输出1

Case 1:
LOAD 1 1
LOAD 2 2
NO ACTION
LOAD 2 4
NO ACTION

Case 2:
LOAD 1 1
LOAD 2 3
LOAD 3 2

来源

CTU Open 2003