結果

問題 No.1433 Two color sequence
ユーザー kept1994
提出日時 2021-08-29 01:02:53
言語 PyPy3
(7.3.15)
結果
AC  
実行時間 173 ms / 2,000 ms
コード長 1,206 bytes
コンパイル時間 569 ms
コンパイル使用メモリ 82,560 KB
実行使用メモリ 156,864 KB
最終ジャッジ日時 2024-11-22 01:15:23
合計ジャッジ時間 5,118 ms
ジャッジサーバーID
(参考情報)
judge2 / judge4
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 3
other AC * 21
権限があれば一括ダウンロードができます

ソースコード

diff #
プレゼンテーションモードにする

#!/usr/bin/env python3
import sys
def main():
import itertools
N = int(input())
S = input()
A = list(map(int, input().split()))
RmB = []
mRB = []
for i in range(N):
if S[i] == "B":
RmB.append(-A[i])
mRB.append(A[i])
else:
RmB.append(A[i])
mRB.append(-A[i])
sRmB = [0] + list(itertools.accumulate(RmB))
smRB = [0] + list(itertools.accumulate(mRB))
# print(RmB)
# print(mRB)
# print(sRmB)
# print(smRB)
minS = 10 ** 10
maxS = -1 * 10 ** 10
ans = -1 * 10 ** 10
for i in range(N + 1):
# print(sRmB[i], minS)
if sRmB[i] <= minS:
ans = max(ans, maxS - minS)
minS = sRmB[i]
maxS = -1 * 10 ** 10
maxS = max(sRmB[i], maxS)
ans = max(ans, maxS - minS)
minS = 10 ** 10
maxS = -1 * 10 ** 10
for i in range(N + 1):
# print(smRB[i], minS)
if smRB[i] <= minS:
ans = max(ans, maxS - minS)
minS = smRB[i]
maxS = -1 * 10 ** 10
maxS = max(smRB[i], maxS)
ans = max(ans, maxS - minS)
print(ans)
return
if __name__ == '__main__':
main()
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
0