AT_rco_contest_2017_final_a 石油王Xの憂鬱

题目描述

有 $N$ 个石油罐,第 $i$ $(1 \leq i \leq N)$ 个石油罐最多可装 $C_i$ 升石油。初始时,所有石油罐都是空的。 会有顾客一个接一个地前来购买石油。每位顾客会提出想购买的石油量 $D$ 升,以及能等待的时间 $T$ 分钟。$D$ 和 $T$ 均为随机生成。 你需要在 $T$ 分钟内,使用 1 个或多个石油罐,准确地取出 $D$ 升石油,如果成功,顾客会支付 $D^2$ 的费用。顾客购买完毕后会离开,随即下一个顾客到来。 如果在 $T$ 分钟内无法准备出 $D$ 升石油,顾客会离开,此时也会立刻到来下一位顾客。 你每分钟必须执行以下操作之一: - `fill i`:将第 $i$ 个石油罐填满。如果该罐已满则无事发生。 - `move i j`:将第 $i$ 个石油罐内的石油移入第 $j$ 个石油罐。如果第 $i$ 罐的石油比第 $j$ 罐的剩余容量多,则将第 $j$ 罐加满,剩余石油仍留在第 $i$ 罐内。否则将第 $i$ 罐所有石油全部移入第 $j$ 罐。 - `change i`:将第 $i$ 个石油罐更换为空的新罐。如果该罐中还有石油,则石油被丢弃。新罐的容量 $C_i$ 将随机确定。 - `pass`:让当前顾客离开,立刻有新顾客到来。 - `sell n x_1 x_2 x_3 ... x_n`:用第 $x_1$、$x_2$、$x_3$、…、$x_n$ 个罐售出石油,共 $n$ 个罐。被选中罐中的石油总量必须恰好为 $D$。不能出售空罐。被售出的罐将被新空罐替换,容量 $C_i$ 随机决定。 请通过重复上述操作 $1000$ 次,使得到的费用总额最大化。

输入格式

输入标准输入,连续给出 $1000$ 组数据,每组格式如下: > $D\ T\ C_1\ C_2\ C_3\ C_4\ C_5\ C_6\ C_7\ C_8\ A_1\ A_2\ A_3\ A_4\ A_5\ A_6\ A_7\ A_8$ - $D$:当前顾客想要买的石油量,$1 \leq D \leq 50$。 - $T$:当前顾客愿意等待的剩余时间,$1 \leq T \leq 10$。 - $C_i$:第 $i$ 个石油罐的容量,$1 \leq C_i \leq 10$。 - $A_i$:第 $i$ 个石油罐当前存有石油量,$0 \leq A_i \leq C_i$。初始时 $A_i = 0$。

输出格式

- 每次输入后, 必须输出一行操作指令。 - 请确保程序总共输出 $1000$ 行操作。 - 每次输出后须换行并刷新输出缓冲区。 #### 填满第 $i$ 个石油罐 > fill $i$ - 输出“fill $i$”,表示将第 $i$ 个石油罐填满。 #### 将第 $i$ 个石油罐中的石油转移到第 $j$ 个罐 > move $i$ $j$ - 输出“move $i$ $j$”,$i, j$ 均为 $1\leq i,j\leq 8$ 且 $i \neq j$。 #### 更换第 $i$ 个石油罐 > change $i$ - 输出“change $i$”,表示将第 $i$ 个罐更换为空的新罐。 #### 让当前顾客离开 > pass - 仅输出“pass”。 #### 出售石油 > sell $n\ x_1\ x_2\ ...\ x_n$ - 输出“sell $n~x_1~x_2~...~x_n$”,$n$ 表示出售的罐数,$x_k$ 为罐编号($1 \leq x_k \leq 8$)。 - $A_{x_k} > 0$,且这些罐的石油总量正好为 $D$。 - 不可重复选同一个罐编号。

说明/提示

### 约束条件 - $N = 8$ - $1 \leq C_i \leq 10$ - $1 \leq D \leq 50$ - $1 \leq T \leq 10$ - 所有数值均为整数,且通过均匀随机生成。 ### 评分说明 每个测试用例,将你获得的费用总和视为分数。 共有 50 个测试用例,所有分数之和为本题的得分。 如果输出格式错误、输出次数不足 $1000$ 次,或提前退出,则结果未定义(并不一定为 WA)。 ### 输入输出示例 程序输入 ``` 3 2 6 2 3 2 9 10 7 7 0 0 0 0 0 0 0 0 ``` - 顾客想买 $3$ 升石油,能等 $2$ 分钟。初始所有罐均为空。 程序输出 ``` fill 1 ``` - 填满第 $1$ 个石油罐。 输入 ``` 3 1 6 2 3 2 9 10 7 7 6 0 0 0 0 0 0 0 ``` - 第 $1$ 个罐已加满,过了一分钟,顾客剩 $1$ 分钟等待。 输出 ``` move 1 4 ``` - 将第 $1$ 个罐的石油倒入第 $4$ 个罐。 输入 ``` 6 8 6 2 3 2 9 10 7 7 4 0 0 2 0 0 0 0 ``` - 顾客等了 $0$ 分钟就走了,新顾客欲买 $6$ 升,最多等 $8$ 分钟。 输出 ``` sell 2 1 4 ``` - 出售第 $1$ 与第 $4$ 罐,共 $6$ 升,获得 $6^2 = 36$。 输入 ``` 5 5 1 2 3 5 9 10 7 7 0 0 0 0 0 0 0 0 ``` - 顾客已离开并立刻有新顾客。被卖出的罐替换为空的新罐。 输出 ``` change 2 ``` - 更换第 $2$ 个罐为空新罐。 输入 ``` 5 4 1 1 3 5 9 10 7 7 0 0 0 0 0 0 0 0 ``` - 第 $2$ 罐已被更换成新罐。 输出 ``` pass ``` - 让当前顾客离开。 输入 ``` 8 2 1 1 3 5 9 10 7 7 0 0 0 0 0 0 0 0 ``` - 新顾客欲买 $8$ 升石油。 ...输入持续共 $1000$ 组,每组输入都需即时输出操作并刷新缓冲区。 ### 关于输出 flush 本题每组输入都要求立即输出并刷新缓冲区。常见语言 flush 输出例子说明: #### C++ ``` std::cout