#CF1809E. 两个水箱

两个水箱

两个水箱

  • 时间限制:2 秒
  • 内存限制:512 MiB

题目描述

有两个水箱,容量分别为 a,ba,b 升。初始时,第一个水箱中有 cc 升水,第二个水箱中有 dd 升水。

依次执行 nn 次操作。第 ii 次操作由非零整数 viv_i 描述:

  • 若 vi>0v_i>0,尝试从第一个水箱向第二个水箱倒入 viv_i 升;
  • 若 vi<0v_i<0,尝试从第二个水箱向第一个水箱倒入 −vi-v_i 升。

若源水箱当前有 yy 升水、目标水箱还能容纳 zz 升,尝试倒入 xx 升时实际移动 min⁡(x,y,z)\min(x,y,z) 升。

对所有满足 0≤c≤a0\le c\le a、0≤d≤b0\le d\le b 的初始状态,求全部操作结束后第一个水箱中的水量。

输入格式

第一行包含三个整数 n,a,bn,a,b。

第二行包含 nn 个非零整数 v1,v2,…,vnv_1,v_2,\ldots,v_n。

输出格式

输出 a+1a+1 行,每行 b+1b+1 个整数。第 ii 行第 jj 个整数表示初始 c=i−1,d=j−1c=i-1,d=j-1 时,所有操作结束后第一个水箱中的水量。

样例输入 1

3 4 4
-2 1 2

样例输出 1

0 0 0 0 0
0 0 0 0 1
0 0 1 1 2
0 1 1 2 3
1 1 2 3 4

数据范围

  • 1≤n≤1041\le n\le 10^4;
  • 1≤a,b≤10001\le a,b\le 1000;
  • −1000≤vi≤1000-1000\le v_i\le1000 且 vi≠0v_i\ne0。
子任务编号 分值 特殊限制
1 20 n≤30n\le30,a,b≤20a,b\le20
2 40 a,b≤100a,b\le100
3 无特殊限制

题目来源:Codeforces 1809E。