2D prefix sum

大きな2次元配列(r 行と c 列の数値要素)を与えられたとき、各要素に対する二次元累積和 (2D prefix sum) を求めることが課題です。ここで、二次元累積和とは、座標 (0, 0) から (r, c) までの要素をすべて合計したもので、それは四隅 (0, 0), (r, 0), (r, c), (0, c) で区切られる部分行列の要素合計を指します。
行列のすべての位置に対して、この二次元累積和を効率的に計算できるでしょうか?
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Video preview

入力

入力の最初の行には、行列の行数 r と列数 c の2つの整数が与えられます (1 ≤ r, c ≤ 1000)。
続く r 行には、それぞれ c 個の整数が空白区切りで与えられます。これらは行列の要素を表します ()。

出力

プログラムは、二次元累積和行列を表す c 個の数値を含む r 行を出力してください。

入力
出力
3 5 1 2 -3 4 6 -1 3 8 4 0 0 1 -2 0 5
1 3 0 4 10 0 5 10 18 24 0 6 9 17 28
 

Constraints

Time limit: 6 seconds

Memory limit: 512 MB

Output limit: 15 MB

To check your solution you need to sign in
Sign in to continue