結果
| 問題 | No.3802 Crossword Key |
| ユーザー |
|
| 提出日時 | 2026-10-06 12:00:34 |
| 言語 | Python3 (3.15.2 + numpy 2.5.4 + scipy 1.18.1 + ACL) |
| 結果 |
AC
不安定
|
| 実行時間 | 19 ms / 2,000 ms |
| + 835µs | |
| コード長 | 1,034 bytes |
| 記録 | |
| コンパイル時間 | 57 ms |
| コンパイル使用メモリ | 14,848 KB |
| 実行使用メモリ | 10,496 KB |
| 最終ジャッジ日時 | 2026-11-14 14:30:16 |
| 合計ジャッジ時間 | 2,889 ms |
|
ジャッジサーバーID (参考情報) |
judge1_0 / judge5_0 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 41 |
ソースコード
import sys
def main():
input = sys.stdin.read
data = input().split()
if not data:
return
H = int(data[0])
W = int(data[1])
S = data[2:]
keys = []
# 上から順、左から順に走査する
for r in range(H):
for c in range(W):
# 黒マスの場合はカギになり得ない
if S[r][c] == '#':
continue
# 横のカギの条件判定
is_horizontal = False
if c == 0 or S[r][c - 1] == '#':
if c + 1 < W and S[r][c + 1] == '.':
is_horizontal = True
# 縦のカギの条件判定
is_vertical = False
if r == 0 or S[r - 1][c] == '#':
if r + 1 < H and S[r + 1][c] == '.':
is_vertical = True
# どちらか一方、または両方を満たしていればカギとする
if is_horizontal or is_vertical:
# 1-indexed (1始まり) で記録
keys.append((r + 1, c + 1))
# 結果の出力
print(len(keys))
for r, c in keys:
print(f"{r} {c}")
if __name__ == '__main__':
main()