結果

問題 No.640 76本のトロンボーン
ユーザー tktk_snsntktk_snsn
提出日時 2020-12-16 20:11:34
言語 PyPy3
(7.3.15)
結果
AC  
実行時間 49 ms / 2,000 ms
コード長 1,125 bytes
コンパイル時間 883 ms
コンパイル使用メモリ 81,404 KB
実行使用メモリ 64,080 KB
最終ジャッジ日時 2023-10-20 09:48:59
合計ジャッジ時間 2,266 ms
ジャッジサーバーID
(参考情報)
judge15 / judge13
このコードへのチャレンジ
(要ログイン)

テストケース

テストケース表示
入力 結果 実行時間
実行使用メモリ
testcase_00 AC 39 ms
53,312 KB
testcase_01 AC 38 ms
53,312 KB
testcase_02 AC 38 ms
53,312 KB
testcase_03 AC 37 ms
53,312 KB
testcase_04 AC 38 ms
53,312 KB
testcase_05 AC 38 ms
53,312 KB
testcase_06 AC 48 ms
64,080 KB
testcase_07 AC 48 ms
64,080 KB
testcase_08 AC 49 ms
64,080 KB
testcase_09 AC 48 ms
64,080 KB
testcase_10 AC 47 ms
64,080 KB
testcase_11 AC 49 ms
64,080 KB
testcase_12 AC 49 ms
64,080 KB
testcase_13 AC 38 ms
53,312 KB
testcase_14 AC 48 ms
62,032 KB
testcase_15 AC 39 ms
53,312 KB
testcase_16 AC 38 ms
53,312 KB
権限があれば一括ダウンロードができます

ソースコード

diff #

import sys
input = sys.stdin.readline
sys.setrecursionlimit(10 ** 7)

n = int(input())
S = [list(input().rstrip()) for _ in range(n)]
blank = "." * (n - 1)


def rot(A):
    n, m = len(A), len(A[0])
    res = [[0] * n for _ in range(m)]
    for i in range(n):
        for j in range(m):
            res[j][n - i - 1] = A[i][j]
    return res


def count():
    res = 0
    for i in range(1, n - 1):
        res += int("".join(S[i][:n-1]) == blank)

    a0 = int("".join(S[0][:n-1]) == blank)
    a1 = int("".join(S[0][1:]) == blank)
    b0 = int("".join(S[-1][:n-1]) == blank)
    b1 = int("".join(S[-1][1:]) == blank)
    c0 = int(all(S[i][-1] == "." for i in range(n - 1)))
    c1 = int(all(S[i][-1] == "." for i in range(1, n)))

    tmp = a0 + b0 + max(c0, c1)
    tmp = max(tmp, a0 + b1 + c0)
    tmp = max(tmp, a1 + b0 + c1)
    tmp = max(tmp, a1 + b1)
    return res + tmp


ans = 0
for _ in range(4):
    ans = max(ans, count())
    S = rot(S)

ng = 0
for i in range(n):
    ng |= S[0][i] == "#"
    ng |= S[i][0] == "#"
    ng |= S[-1][i] == "#"
    ng |= S[i][-1] == "#"
if not ng:
    ans = max(ans, 4)

print(ans)
0