fork download
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3.  
  4. vector<int> bestPrefixSum(vector<int>& arr , int n){
  5. int prev=0 , current;
  6. vector<int> p1(n+1);
  7. for(int i=1;i<=n;i++){
  8. int current=max(prev+arr[i-1],arr[i-1]);
  9. int current1=max(current,0);
  10. prev=current1;
  11. p1[i]=current1;
  12. }
  13. return p1;
  14. }
  15.  
  16. vector<int> bestSuffixSum(vector<int>& arr , int n){
  17. int aage=0 , current;
  18. vector<int> s1(n+1);
  19. for(int i=n+1;i>0;i--){
  20. int current=max(aage+arr[i-1],arr[i-1]);
  21. int current1=max(current,0);
  22. aage=current1;
  23. s1[i]=current1;
  24. }
  25. return s1;
  26. }
  27. int main() {
  28. vector<int> arr={-1,1,2,3,4,-2,6,-10};
  29. int n=arr.size();
  30. vector<int> pp=bestPrefixSum(arr , n);
  31. vector<int> ss=bestSuffixSum(arr , n);
  32. for(int i=1;i<=n;i++){
  33. cout<<pp[i]<<" ";
  34. }
  35. cout<<endl;
  36. for(int i=1;i<=n;i++){
  37. cout<<ss[i]<<" ";
  38. }
  39. cout<<endl;
  40. for(int i=1;i<n;i++){
  41. cout<<pp[i]<<" "<<ss[i+1]<<endl;
  42.  
  43. }
  44. return 0;
  45. }
Success #stdin #stdout 0s 5320KB
stdin
Standard input is empty
stdout
0     1     3     6     10     8     14     4     
13      14      13      11      8      4      6      0      
0  14
1  13
3  11
6  8
10  4
8  6
14  0