結果
問題 |
No.204 ゴールデン・ウィーク(2)
|
ユーザー |
![]() |
提出日時 | 2025-04-16 01:11:55 |
言語 | PyPy3 (7.3.15) |
結果 |
WA
|
実行時間 | - |
コード長 | 1,928 bytes |
コンパイル時間 | 263 ms |
コンパイル使用メモリ | 81,384 KB |
実行使用メモリ | 53,700 KB |
最終ジャッジ日時 | 2025-04-16 01:13:20 |
合計ジャッジ時間 | 2,985 ms |
ジャッジサーバーID (参考情報) |
judge3 / judge4 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 21 WA * 25 |
ソースコード
D = int(input()) cal = list(input().strip() + input().strip()) n = 14 # Precompute left and right contiguous 'o's left_contiguous = [0] * n left_contiguous[0] = 1 if cal[0] == 'o' else 0 for i in range(1, n): if cal[i] == 'o': left_contiguous[i] = left_contiguous[i-1] + 1 else: left_contiguous[i] = 0 right_contiguous = [0] * n right_contiguous[-1] = 1 if cal[-1] == 'o' else 0 for i in range(n-2, -1, -1): if cal[i] == 'o': right_contiguous[i] = right_contiguous[i+1] + 1 else: right_contiguous[i] = 0 # Calculate original maximum consecutive 'o's max_original = 0 current = 0 for c in cal: if c == 'o': current += 1 if current > max_original: max_original = current else: current = 0 # Extract all intervals of consecutive 'x's x_intervals = [] s = None for i in range(n): if cal[i] == 'x': if s is None: s = i else: if s is not None: x_intervals.append((s, i-1)) s = None if s is not None: x_intervals.append((s, n-1)) max_result = max_original for s, e in x_intervals: L = e - s + 1 # Calculate m (previous 'o's) m = 0 if s > 0 and cal[s-1] == 'o': m = left_contiguous[s-1] # Calculate n (next 'o's) n_val = 0 if e < n-1 and cal[e+1] == 'o': n_val = right_contiguous[e+1] if D == 0: continue # No change possible # Case 1: Convert entire interval (if possible) if D >= L: case1 = m + L + n_val if case1 > max_result: max_result = case1 else: # Case 2: Leftmost D days case2 = m + D # Case 3: Rightmost D days case3 = D + n_val # Case 4: Any D days (middle) case4 = D current_max = max(case2, case3, case4) if current_max > max_result: max_result = current_max print(max_result)