結果
| 問題 | No.3395 Range Flipping Game |
| コンテスト | |
| ユーザー |
回転
|
| 提出日時 | 2025-12-02 00:54:47 |
| 言語 | PyPy3 (7.3.15) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 1,633 bytes |
| コンパイル時間 | 291 ms |
| コンパイル使用メモリ | 82,460 KB |
| 実行使用メモリ | 151,204 KB |
| 最終ジャッジ日時 | 2025-12-02 00:54:56 |
| 合計ジャッジ時間 | 8,370 ms |
|
ジャッジサーバーID (参考情報) |
judge4 / judge3 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 1 |
| other | AC * 18 WA * 12 |
ソースコード
def run_length(S):
ret = []
now = None
count = 0
N = len(S)
for i in range(N):
if(S[i] == now):
count += 1
else:
ret.append((now,count))
count = 1
now = S[i]
ret.append((now,count))
return ret[1:]
def decode(S):
ret = []
for a,b in S:
ret.append(a*b)
return "".join(ret)
T = int(input())
for _ in range(T):
N = int(input())
S = list(input())
if(N <= 2):
print("B"*N)
continue
if(S[0] == S[1] == "B"):
print("".join(S))
continue
rle = run_length(S)
# Alice
if(S[0] == "A" and S[1] == "B"):
if(rle[1][1] == 1):
ptr = 3
while(ptr < len(rle)):
if(rle[ptr][1] >= 2):
rle = rle[:ptr] + [("A",rle[ptr][1])] + rle[ptr+1:]
break
ptr += 2
else:
rle = rle[:1] + [("B",1), ("A", rle[1][1]-1)] + rle[2:]
elif(S[0] == "A" and S[1] == "A"):
if(S[2] == "A"):
rle = [("A",1), ("B",1), ("A", rle[0][1]-2)] + rle[1:]
else:
rle = [("A",1), ("B",1), ("A", rle[1][1])] + rle[2:]
elif(S[0] == "B" and S[1] == "A"):
if(S[2] == "A"):
rle = [("A",1), ("B",1), ("A",rle[1][1]-1)] + rle[2:]
else:
rle = [("A",1), ("B",1), ("A",rle[2][1])] + rle[3:]
rle = run_length(decode(rle))
# Bob
ptr = 0
while(ptr < len(rle)):
if(rle[ptr][0] == "A"):
rle[ptr] = ("B", rle[ptr][1])
break
ptr += 1
print(decode(rle))
回転