AtCoder ABC 047 B – すぬけ君の塗り絵 2 イージー Python解説

2021年11月21日

スポンサーリンク

すぬけ君の塗り絵 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関数を使い、差分がマイナス域にいかないようにしています。