結果
問題 | No.1433 Two color sequence |
ユーザー |
![]() |
提出日時 | 2021-03-19 22:14:00 |
言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 115 ms / 2,000 ms |
コード長 | 828 bytes |
コンパイル時間 | 4,624 ms |
コンパイル使用メモリ | 251,576 KB |
最終ジャッジ日時 | 2025-01-19 18:38:25 |
ジャッジサーバーID (参考情報) |
judge5 / judge4 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 21 |
ソースコード
#include <bits/stdc++.h> using namespace std; using namespace chrono; #if __has_include(<atcoder/all>) #include <atcoder/all> using namespace atcoder; #endif int main() { int64_t n; string s; cin >> n >> s; vector<int64_t> as(n); for (auto &&a : as) { cin >> a; } vector<int64_t> r_sum(n + 1, 0), b_sum(n + 1, 0); for (int64_t i = 0; i < n; i++) { r_sum[i + 1] += r_sum[i]; b_sum[i + 1] += b_sum[i]; ((s[i] == 'R') ? r_sum : b_sum)[i + 1] += as[i]; } int64_t inf = (1LL << 60); int64_t ans = -inf; for (int64_t i = 0, d_min = 0, d_max = 0; i < n; i++) { ans = max({ans, abs(r_sum[i + 1] - b_sum[i + 1] - d_min), abs(r_sum[i + 1] - b_sum[i + 1] - d_max)}); d_min = min(d_min, r_sum[i + 1] - b_sum[i + 1]); d_max = max(d_max, r_sum[i + 1] - b_sum[i + 1]); } cout << ans << endl; return 0; }