結果
問題 | No.1433 Two color sequence |
ユーザー |
|
提出日時 | 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 |
ソースコード
#!/usr/bin/env python3import sysdef main():import itertoolsN = 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 ** 10maxS = -1 * 10 ** 10ans = -1 * 10 ** 10for i in range(N + 1):# print(sRmB[i], minS)if sRmB[i] <= minS:ans = max(ans, maxS - minS)minS = sRmB[i]maxS = -1 * 10 ** 10maxS = max(sRmB[i], maxS)ans = max(ans, maxS - minS)minS = 10 ** 10maxS = -1 * 10 ** 10for i in range(N + 1):# print(smRB[i], minS)if smRB[i] <= minS:ans = max(ans, maxS - minS)minS = smRB[i]maxS = -1 * 10 ** 10maxS = max(smRB[i], maxS)ans = max(ans, maxS - minS)print(ans)returnif __name__ == '__main__':main()