結果
問題 |
No.3185 Three Abs
|
ユーザー |
![]() |
提出日時 | 2025-06-20 22:17:24 |
言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 406 ms / 2,000 ms |
コード長 | 709 bytes |
コンパイル時間 | 1,841 ms |
コンパイル使用メモリ | 198,544 KB |
実行使用メモリ | 7,844 KB |
最終ジャッジ日時 | 2025-06-20 22:17:37 |
合計ジャッジ時間 | 12,127 ms |
ジャッジサーバーID (参考情報) |
judge2 / judge4 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 1 |
other | AC * 30 |
ソースコード
//累積和をいじくれば行ける. #include <bits/stdc++.h> using namespace std; #define int long long int T; int N; void solve(){ cin>>N; vector<int> A(N); for(int i = 0; i < N; i++) cin>>A[i]; vector<int> rui(N); for(int i = 0; i < N; i++){ rui[i] = A[i]; if(i > 0) rui[i] += rui[i-1]; } int mx = A[N-1]; int mi = A[N-1]; int cnt = A[N-1]; int ans = 0; for(int i = N-3; i >= 0; i--){ ans = max(ans,max(abs(rui[i]) + abs(mx) + abs(rui[N-1] - rui[i] - mx),abs(rui[i]) + abs(mi) + abs(rui[N-1] - rui[i] - mi))); cnt += A[i+1]; mx = max(mx,cnt); mi = min(mi,cnt); } cout << ans << endl; } signed main(){ cin>>T; for(int i = 0; i < T; i++) solve(); }