#12780. 倒水模拟(Water Pouring)2

倒水模拟(Water Pouring)2

题目描述:倒水模拟(Water Pouring)

NN个水桶排成一列。每个水桶ii都有一个最大容量CiC_i和当前的水量AiA_i

查理操作流程如下:

从桶 1 开始,将桶 1 的水倒入桶 2;接着将桶 2 的水倒入桶 3……以此类推,直到将桶 N1N - 1 的水倒入桶 NN

​ 倒水规则 ​:

当查理将桶 BB 的水倒入桶 B+1B + 1 时,他会尽可能多地倒,直到满足以下任意一个条件为止:

  1. BB 变空了。
  2. B+1B + 1 满了(达到了其容量 CB+1C_{ B + 1 } )。

请输出所有倒水操作完成后,每个水桶最终的水量。

输入格式

  • 第一行:一个整数 NN ,表示水桶的数量。
  • 第二行: NN 个整数 C1,C2,,CNC_1, C_2, \dots, C_N,表示每个桶的容量。
  • 第三行:NN个整数A1,A2,,ANA_1, A_2, \dots, A_N,表示每个桶的初始水量。

输出格式

  • 输出一行,NN个整数,表示操作完成后每个桶的最终水量,整数之间用空格分隔。

样例输入

Plaintext**

3
10 10 10
5 8 3

样例输出

Plaintext

3 3 10

​ 样例解释 ​:

  1. 桶 1 倒向桶 2:桶 2 剩余空间为 108=210 - 8 = 2 。从桶 1 倒入 2 单位水。桶 1 剩 33 ,桶 2 满( 1010 )。
  2. 桶 2 倒向桶 3:桶 3 剩余空间为 103=710 - 3 = 7 。从桶 2 倒入 7 单位水。桶 2 剩 33 ,桶 3 变为 1010
  • (注意:此处的逻辑需根据代码实现微调,上述为手动模拟示例) *

数据范围

5N1055 \leq N \leq 10 ^ 5 1Ci1001 \leq C_i \leq 100 1AiCi1 \leq A_i \leq C_i

  • 时间限制:1.0s
  • 内存限制:256MB