ABC390 - C - Paint to make a rectangle
問題
左上・右下の頂点となるマスを探して、内部をすべて黒にできるか試す。
左上となるマスは、他のどの黒マスより左にあって、他のどの黒マスより上にあるマスのうち最も右下にあるものが最適。このマスは白黒無色のどれであっても(後で判定するので)構わない。
code: ex.py
......?..
..?o#..#.
?..#..?.#
.....#...
右下も同様に決定した時、黒であるべき領域が定まるので、あとはこの領域内に白マスがなければOK
code: c.py
H, W = map(int, input().split())
a, c = 1 << 10, 1 << 10
b, d = -1, -1
for h in range(H):
for w in range(W):
if s == ".": continue
if s == "?": continue
a = min(a, h)
b = max(b, h)
c = min(c, w)
d = max(d, w)
for h in range(a, b+1):
for w in range(c, d+1):
if s == ".":
print("No")
exit()
else:
print("Yes")