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 sumOf2Subarray(vector<int>& pp , vector<int> &ss, int n){
  28. vector<int> maxPP(n+2,0);
  29. vector<int> maxSS(n+2,0);
  30. int maxsum=0;
  31. for(int i=2;i<n+2;i++){
  32. maxPP[i]=max(maxPP[i-1],pp[i-1]);
  33.  
  34. }
  35. for(int i=n;i>=0;i--){
  36. maxSS[i]=max(maxSS[i+1],ss[i]);
  37.  
  38. }
  39.  
  40.  
  41. }
  42. int main() {
  43. vector<int> arr={-1,1,2,3,4,-2,6,-10};
  44. int n=arr.size();
  45. vector<int> pp=bestPrefixSum(arr , n);
  46. vector<int> ss=bestSuffixSum(arr , n);
  47. for(int i=1;i<=n;i++){
  48. cout<<pp[i]<<" ";
  49. }
  50. cout<<endl;
  51. for(int i=1;i<=n;i++){
  52. cout<<ss[i]<<" ";
  53. }
  54. cout<<endl;
  55. for(int i=1;i<n;i++){
  56. cout<<pp[i]<<" "<<ss[i+1]<<endl;
  57.  
  58. }
  59. return 0;
  60. }
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