結果

問題 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
権限があれば一括ダウンロードができます

ソースコード

diff #
raw source code

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)
0