結果
| 問題 | No.3733 My First Grid |
| コンテスト | |
| ユーザー |
kidodesu
|
| 提出日時 | 2026-09-19 16:31:31 |
| 言語 | PyPy3 (7.3.23 + ACL) |
| 結果 |
WA
不安定
|
| 実行時間 | - |
| コード長 | 5,007 bytes |
| 記録 | |
| コンパイル時間 | 63 ms |
| コンパイル使用メモリ | 83,440 KB |
| 実行使用メモリ | 147,712 KB |
| 最終ジャッジ日時 | 2026-09-19 16:31:44 |
| 合計ジャッジ時間 | 5,446 ms |
|
ジャッジサーバーID (参考情報) |
judge2_0 / judge1_1 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 53 WA * 1 RE * 3 |
ソースコード
def main():
h, w, k = list(map(int, input().split()))
if k == 0:
for y in range(h):
print("."*w)
return
if h == 1:
if k == 1:
print("#"+"."*(w-1))
else:
print(-1)
return
if w == 1:
if k == 1:
print("#")
for y in range(h-1): print(".")
else:
print(-1)
return
if k == 1:
print(-1)
return
if h == 2:
if 2 <= k <= w:
print("#"*(k-1)+"."*(w-k+1))
print("."*w)
else:
print(-1)
return
if w == 2:
if 2 <= k <= h:
for _ in range(k-1):
print("#.")
for _ in range(h-k+1):
print("..")
else:
print(-1)
return
if k == 2:
print("#"+"."*(w-1))
for _ in range(h-1):
print("."*w)
return
if k == 3:
print("##"+"."*(w-2))
for _ in range(h-1):
print("."*w)
return
if k == 4:
print("##"+"."*(w-2))
print("#"+"."*(w-1))
for _ in range(h-2):
print("."*w)
return
if not h % 2 and w % 2:
assert 0
if not h % 2 or not w % 2:
f = 0
if w % 2:
h, w = w, h
f = 1
Ans = [["." for _ in range(w)] for _ in range(h)]
A = [[0 for _ in range(w)] + [1] for _ in range(h)] + [[1] * (w+1)]
E = []
for y in range(h):
A[y][0] = 1
Ans[y][0] = "#"
E.append((y, 0))
for x in range(1, w-1):
A[h-1][x] = 1
Ans[h-1][x] = "#"
E.append((h-1, x))
y, x = h-1, w-2
dy = [1, 0, -1, 0]
dx = [0, 1, 0, -1]
di = 2
while 1:
if not A[y][x]:
E.append((y, x))
A[y][x] = 1
Ans[y][x] = "#"
if A[y+dy[di]][x+dx[di]]: break
if A[y+dy[di]+dy[(di+1)%4]][x+dx[di]+dx[(di+1)%4]]: break
if not A[y+dy[di]*2][x+dx[di]*2]:
y, x = y+dy[di], x+dx[di]
else:
di = (di+1)%4
#for aa in A:
# print(aa)
a = 0
for aa in A[:-1]:
a += sum(aa[:-1])
if 2*a+1-h-w+1 < k:
print(-1)
return
ans = 2*a+1-h-w+1
if (ans-k)%2:
Ans[0][0] = "."
Ans[1][0] = "."
ans -= 1
while ans > k:
y, x = E.pop()
A[y][x] = 0
Ans[y][x] = "."
ans += 1
for di in range(4):
ny, nx = y+dy[di], x+dx[di]
if A[ny][nx] == 0:
ans -= 1
if f:
assert 0
Ans = [[Ans[y][x] for y in range(h)] for x in range(w)]
for ans in Ans:
print("".join(ans))
return
else:
A = [[0 for _ in range(w)] + [1] for _ in range(h)] + [[1] * (w+1)]
y, x = 0, 1
dy = [1, 0, -1, 0]
dx = [0, 1, 0, -1]
di = 0
E = []
while 1:
if not A[y][x]:
E.append((y, x))
A[y][x] = 1
if A[y+dy[di]][x+dx[di]]: break
if A[y+dy[di]+dy[(di+1)%4]][x+dx[di]+dx[(di+1)%4]]: break
if not A[y+dy[di]*2][x+dx[di]*2]:
y, x = y+dy[di], x+dx[di]
else:
di = (di+1)%4
a = 0
for aa in A[:-1]:
a += sum(aa[:-1])
if k <= 2*a+1 :
Ans = [["." for _ in range(w)] for _ in range(h)]
if not k % 2:
Ans[0][0] = "#"
Ans[1][0] = "#"
for i in range(k//2):
y, x = E[i]
Ans[y][x] = "#"
for ans in Ans:
print("".join(ans))
return
h, w = w, h
A = [[0 for _ in range(w)] + [1] for _ in range(h)] + [[1] * (w+1)]
y, x = 0, 1
dy = [1, 0, -1, 0]
dx = [0, 1, 0, -1]
di = 0
E = []
while 1:
if not A[y][x]:
E.append((y, x))
A[y][x] = 1
if A[y+dy[di]][x+dx[di]]: break
if A[y+dy[di]+dy[(di+1)%4]][x+dx[di]+dx[(di+1)%4]]: break
if not A[y+dy[di]*2][x+dx[di]*2]:
y, x = y+dy[di], x+dx[di]
else:
di = (di+1)%4
a = 0
for aa in A[:-1]:
a += sum(aa[:-1])
if k <= 2*a+1:
Ans = [["." for _ in range(w)] for _ in range(h)]
if not k % 2:
Ans[0][0] = "#"
Ans[1][0] = "#"
for i in range(k//2):
y, x = E[i]
Ans[y][x] = "#"
Ans = [[Ans[y][x] for y in range(h)] for x in range(w)]
for ans in Ans:
print("".join(ans))
return
print(-1)
return
main()
kidodesu