AtCoder ABC 047 B – すぬけ君の塗り絵 2 イージー Python解説
すぬけ君の塗り絵 2 イージー
すぬけ君の塗り絵 2 イージー問題文。黒く塗りつぶす座標の管理がポイントになります。
今回はx_1、x_2、y_1、y_2で塗りつぶした座標を管理し、最後にx_diff×y_diffで白い部分の面積を求めています。
w, h, n = map(int, input().split())
x_1 = 0
x_2 = w
y_1 = 0
y_2 = h
for i in range(n):
x, y, a = map(int, input().split())
if a == 1:
x_1 = max(x_1, x) # *1
elif a == 2:
x_2 = min(x_2, x)
elif a == 3:
y_1 = max(y_1, y)
elif a == 4:
y_2 = min(y_2, y)
x_diff = max(0, (x_2 - x_1)) # *2
y_diff = max(0, (y_2 - y_1))
print(x_diff * y_diff)
(*1) aの値で条件分岐。max関数とmin関数を使い、塗りつぶす部分が増えたら座標を更新するようにしています。
(*2) x_diffとy_diffで差分を取る際、場合によっては差分がマイナスになることが考えられるので、max関数を使い、差分がマイナス域にいかないようにしています。