結果

問題 No.204 ゴールデン・ウィーク(2)
ユーザー gew1fw
提出日時 2025-06-12 16:44:20
言語 PyPy3
(7.3.15)
結果
WA  
実行時間 -
コード長 1,787 bytes
コンパイル時間 326 ms
コンパイル使用メモリ 82,240 KB
実行使用メモリ 54,540 KB
最終ジャッジ日時 2025-06-12 16:44:27
合計ジャッジ時間 3,571 ms
ジャッジサーバーID
(参考情報)
judge4 / judge1
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 3
other AC * 25 WA * 21
権限があれば一括ダウンロードができます

ソースコード

diff #

D = int(input())
C1 = input().strip()
C2 = input().strip()
S = C1 + C2

# Precompute leading_o
leading_o = 0
for c in S:
    if c == 'o':
        leading_o += 1
    else:
        break

# Precompute trailing_o
trailing_o = 0
for c in reversed(S):
    if c == 'o':
        trailing_o += 1
    else:
        break

# Precompute left_o: the max 'o's ending at each position
left_o = [0] * 14
if S[0] == 'o':
    left_o[0] = 1
for i in range(1, 14):
    if S[i] == 'o':
        left_o[i] = left_o[i-1] + 1
    else:
        left_o[i] = 0

# Precompute right_o: the max 'o's starting at each position
right_o = [0] * 14
if S[13] == 'o':
    right_o[13] = 1
for i in range(12, -1, -1):
    if S[i] == 'o':
        right_o[i] = right_o[i+1] + 1
    else:
        right_o[i] = 0

max_o = max(left_o)

if D == 0:
    print(max_o)
else:
    # Case 1: converted block before S
    case1 = D
    if S[0] == 'o':
        case1 += leading_o

    # Case 2: converted block after S
    case2 = D
    if S[-1] == 'o':
        case2 += trailing_o

    # Case 3: converted block within S
    case3_max = 0
    for i in range(14 - D + 1):
        # Check if S[i..i+D-1] are all 'x's
        all_x = True
        for j in range(i, i + D):
            if j >= 14:
                all_x = False
                break
            if S[j] != 'x':
                all_x = False
                break
        if all_x:
            # Calculate pre_o and post_o
            pre_o = 0
            if i > 0:
                pre_o = left_o[i-1]
            post_o = 0
            if i + D < 14:
                post_o = right_o[i + D]
            total = pre_o + D + post_o
            if total > case3_max:
                case3_max = total

    overall_max = max(max_o, case1, case2, case3_max)
    print(overall_max)
0