結果

問題 No.3733 My First Grid
コンテスト
ユーザー kidodesu
提出日時 2026-09-19 15:54:23
言語 PyPy3
(7.3.23 + ACL)
コンパイル:
pypy3 -mpy_compile _filename_
実行:
pypy3 _filename_
結果
RE  
実行時間 -
コード長 1,895 bytes
記録
記録タグの例:
初AC ショートコード 純ショートコード 純主流ショートコード 最速実行時間
コンパイル時間 62 ms
コンパイル使用メモリ 82,416 KB
実行使用メモリ 139,868 KB
最終ジャッジ日時 2026-09-19 15:54:31
合計ジャッジ時間 5,182 ms
ジャッジサーバーID
(参考情報)
judge2_0 / judge3_0
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 2 RE * 1
other AC * 44 WA * 2 RE * 11
権限があれば一括ダウンロードができます

ソースコード

diff #
raw source code

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
    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 2*a+1 < k:
        print(-1)
        return
    assert 0
    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))

main()
0