結果

問題 No.3730 Jagged Minesweeper
コンテスト
ユーザー 👑 kencho
提出日時 2026-09-03 04:40:27
言語 PyPy3
(7.3.23 + ACL)
コンパイル:
pypy3 -mpy_compile _filename_
実行:
pypy3 _filename_
結果
AC  
実行時間 431 ms / 2,500 ms
+ 287µs
コード長 935 bytes
記録
記録タグの例:
初AC ショートコード 純ショートコード 純主流ショートコード 最速実行時間
コンパイル時間 80 ms
コンパイル使用メモリ 81,024 KB
実行使用メモリ 206,324 KB
最終ジャッジ日時 2026-09-19 13:01:58
合計ジャッジ時間 15,651 ms
ジャッジサーバーID
(参考情報)
judge3_1 / judge1_0
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 2
other AC * 43
権限があれば一括ダウンロードができます

ソースコード

diff #
raw source code

import sys
from collections import deque

data = sys.stdin.buffer
n = int(data.readline())
target = [data.readline().strip() for _ in range(n)]
size = n * n
bomb, near, queued = bytearray(size), bytearray(size), bytearray(b"\1") * size
queue = deque(range(size))
directions = ((-1, -1), (-1, 0), (-1, 1), (0, -1), (0, 1), (1, -1), (1, 0), (1, 1))
while queue:
    cell = queue.popleft()
    queued[cell] = 0
    r, c = divmod(cell, n)
    wanted = near[cell] < target[r][c] - 48
    if bomb[cell] == wanted:
        continue
    delta, bomb[cell] = (1 if wanted else -1), wanted
    for dr, dc in directions:
        nr, nc = r + dr, c + dc
        if 0 <= nr < n and 0 <= nc < n:
            nxt = nr * n + nc
            near[nxt] += delta
            if not queued[nxt]:
                queued[nxt] = 1
                queue.append(nxt)
print("\n".join("".join("o" if bomb[r * n + c] else "." for c in range(n)) for r in range(n)))
0