fork download
  1. #include <bits/stdc++.h>
  2. #define endl '\n'
  3. typedef long long ll;
  4. using namespace std;
  5.  
  6. const ll MAXN = 1e5 + 5;
  7. ll a[MAXN], pre[MAXN], suf[MAXN], l[MAXN], r[MAXN], n, ans = LLONG_MIN;
  8.  
  9. void sol() {
  10. cin >> n;
  11. for (ll i = 1; i <= n; i++) cin >> a[i];
  12. for (ll i = 1; i <= n; i++) pre[i] = pre[i - 1] + a[i];
  13. for (ll i = n; i >= 1; i--) suf[i] = suf[i + 1] + a[i];
  14. ll minn = 0;
  15. l[0] = LLONG_MIN;
  16. for (ll i = 1; i <= n; i++) {
  17. l[i] = max(l[i - 1], pre[i] - minn);
  18. if (i == 1) l[i] = max(l[i], a[i]);
  19. minn = min(minn, pre[i]);
  20. }
  21. minn = 0; r[n + 1] = LLONG_MIN;
  22. for (ll i = n; i >= 1; i--) {
  23. r[i] = max(r[i + 1], suf[i] - minn);
  24. if (i == n) r[i] = max(r[i], a[i]);
  25. minn = min(minn, suf[i]);
  26. }
  27. for (ll i = 1; i < n; i++) {
  28. ans = max(ans, l[i] + r[i + 1]);
  29. }
  30. cout << ans << endl;
  31. }
  32.  
  33. int main() {
  34. ios::sync_with_stdio(0);
  35. cin.tie(0);
  36.  
  37. sol();
  38.  
  39. return 0;
  40. }
  41.  
Success #stdin #stdout 0s 5304KB
stdin
Standard input is empty
stdout
-9223372036854775808