結果
| 問題 | No.672 最長AB列 |
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2026-02-26 11:30:23 |
| 言語 | PyPy3 (7.3.17) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 930 bytes |
| 記録 | |
| コンパイル時間 | 383 ms |
| コンパイル使用メモリ | 77,780 KB |
| 実行使用メモリ | 76,088 KB |
| 最終ジャッジ日時 | 2026-02-26 11:30:26 |
| 合計ジャッジ時間 | 2,743 ms |
|
ジャッジサーバーID (参考情報) |
judge4 / judge7 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 13 WA * 3 |
ソースコード
S = input().strip()
nA = 0
nB = 0
for a in S:
if a=="A":
nA += 1
else:
nB += 1
if nA == nB:
ans = len(S)
elif nA==0 or nB==0:
ans = 0
else:
C = [0]*len(S)
if nA>nB:
for i in range(len(S)):
if S[i]=="B":
C[i] = 1
n0 = nA
n1 = nB
else:
for i in range(len(S)):
if S[i]=="A":
C[i] = 1
n0 = nB
n1 = nA
D = [0]*(len(S)+1)
for i in range(len(S)):
if C[i]==1:
D[i+1] = D[i]+1
else:
D[i+1] = D[i]
low = 0
high = n1+1
while low+1<high:
mid = (low+high)//2
flag = False
for i in range(len(S)-2*mid+1):
x = D[i+2*mid]-D[i]
if x==mid:
flag = True
break
if flag:
low = mid
else:
high = mid
ans = 2*low
print(ans)