結果
| 問題 | No.3395 Range Flipping Game |
| コンテスト | |
| ユーザー |
norioc
|
| 提出日時 | 2025-12-02 02:51:50 |
| 言語 | PyPy3 (7.3.15) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 1,786 bytes |
| コンパイル時間 | 331 ms |
| コンパイル使用メモリ | 82,712 KB |
| 実行使用メモリ | 133,120 KB |
| 最終ジャッジ日時 | 2025-12-02 02:51:58 |
| 合計ジャッジ時間 | 7,344 ms |
|
ジャッジサーバーID (参考情報) |
judge3 / judge1 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 1 |
| other | AC * 8 WA * 22 |
ソースコード
def group_when(xs, pred):
res = []
a = []
for x in xs:
if not a or pred(a[-1], x):
a.append(x)
else:
res.append(a)
a = [x]
if a:
res.append(a)
return res
def f(g):
res = []
for x in g:
res.extend(x)
return ''.join(res)
def flip(xs):
for i in range(len(xs)):
if xs[i] == 'A':
xs[i] = 'B'
else:
xs[i] = 'A'
def solve_a(g):
assert g[0][0] == 'A'
hd = g[0]
n = len(hd)
if n >= 3:
hd[0] = hd[1] = 'B'
return f(g)
cnt = 0
flip(hd)
for i, x in enumerate(g):
if i == 0: continue
if x[0] == 'A' and len(x) >= 3:
x[0] = x[1] = 'B'
return f(g)
if x[0] == 'B':
cnt += 1
if len(x) > 1 and cnt == 1:
flip(x)
x[0] = 'B'
return f(g)
elif cnt > 1:
flip(x)
return f(g)
return f(g)
def solve_b(g):
assert g[0][0] == 'B'
hd = g[0]
n = len(hd)
if n >= 2:
return f(g)
cnt = 0
for x in g:
if x[0] == 'A' and len(x) >= 3:
x[0] = x[1] = 'B'
return f(g)
if x[0] == 'B':
cnt += 1
if len(x) > 1 and cnt == 1:
flip(x)
x[0] = 'B'
return f(g)
elif cnt > 1:
flip(x)
return f(g)
return f(g)
def solve():
N = int(input())
S = input()
g = group_when(S, lambda a, b: a == b)
hd = g[0]
if hd[0] == 'A':
return solve_a(g)
else:
return solve_b(g)
T = int(input())
for _ in range(T):
ans = solve()
print(ans)
norioc