問題 - 組体操

http://www.02320.net/kumitaisou-load-weight/ より
kgの体重の人間が集まって 段ピラミッドをすることになった。各人間の体重は手をついている人間に均等に掛かるとした時、各人間に掛かる負荷(kg)を四捨五入で表示せよ。
入力, 制約
n m
例
入力例1
3 100
出力例1
0
50 50
75 150 75
入力例2
10 40
出力例2
0
20 20
30 60 30
35 85 85 35
38 100 125 100 38
39 109 152 152 109 39
39 114 171 192 171 114 39
40 117 182 222 222 182 117 40
40 118 189 242 262 242 189 118 40
40 119 194 256 292 292 256 194 119 40
解答例(Python)
背中に掛かる負荷は上の左右の人からかかる負荷の和であり、その負荷は左右の人がかかる負荷の半分に体重を足したものである。端の処理に注意
n, m = map(int, input().split())
a = [[.0 for j in range(n + 2)] for i in range(n)]
for i in range(1, n):
for j in range(1, i + 2):
# l. r: 左右からの負荷, m: 追加でかかる重量
l, r, w = a[i - 1][j - 1], a[i - 1][j], m if j in [1, i + 1] else 2 * m
a[i][j] += (l + r + w) / 2
for i in range(n):
for j in range(1, i + 2):
print(round(a[i][j]), end=' ')
print('')