fork download
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3.  
  4. int main() {
  5. int n;
  6. cin>>n;
  7.  
  8. vector<int> numbers(n);
  9.  
  10. for(auto& number: numbers){
  11. cin>>number;
  12. }
  13.  
  14. vector<int> maxPrefixSum(n), maxSuffixSum(n);
  15.  
  16. int currentSum = 0;
  17.  
  18. for(int i=0; i<n; i++){
  19. currentSum = max(0,max(numbers[i],currentSum+numbers[i]));
  20. maxPrefixSum[i] = currentSum;
  21. }
  22.  
  23. currentSum = 0;
  24.  
  25. for(int i=n-1; i>=0; i--){
  26. currentSum = max(0, max(numbers[i], currentSum + numbers[i]));
  27. maxSuffixSum[i] = currentSum;
  28. }
  29.  
  30. vector<int> maxPrefixAcc(n), maxSuffixAcc(n);
  31.  
  32. int current = INT_MIN;
  33.  
  34. for(int i=0; i<n; i++){
  35. current = max(current, maxPrefixSum[i]);
  36. maxPrefixAcc[i] = current;
  37. }
  38.  
  39. current = INT_MIN;
  40.  
  41. for(int i=n-1; i>=0; i--){
  42. current = max(current, maxSuffixSum[i]);
  43. maxSuffixAcc[i] = current;
  44. }
  45.  
  46. int answer = INT_MIN;
  47.  
  48. for(int i=0; i<n-1; i++){
  49. int sum = maxPrefixAcc[i] + maxSuffixAcc[i+1];
  50. answer = max(answer,sum);
  51. }
  52.  
  53. cout<<answer;
  54.  
  55. return 0;
  56. }
Success #stdin #stdout 0.01s 5316KB
stdin
7
1 5 -3 4 -9 9 2
stdout
18