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