fork download
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3.  
  4. int main() {
  5. ios::sync_with_stdio(false);
  6. cin.tie(nullptr);
  7. int N;
  8. if(!(cin >> N)) return 0;
  9. long long best1 = LLONG_MIN, cur1 = 0; // Kadane on B
  10. long long best2 = LLONG_MIN, cur2 = 0; // Kadane on -B
  11. for (int i = 1; i <= N; ++i) {
  12. long long a; cin >> a;
  13. long long Bi = (i & 1) ? a : -a; // B_i
  14. long long nBi = -Bi; // -B_i == C_i
  15.  
  16. // Kadane for B
  17. cur1 = max(Bi, cur1 + Bi);
  18. best1 = max(best1, cur1);
  19.  
  20. // Kadane for -B
  21. cur2 = max(nBi, cur2 + nBi);
  22. best2 = max(best2, cur2);
  23. }
  24. cout << max(best1, best2) << "\n";
  25. return 0;
  26. }
Success #stdin #stdout 0s 5324KB
stdin
5
-1 2 -4 -2 3
stdout
7