#include <bits/stdc++.h>
using namespace std;
vector<int> bestPrefixSum(vector<int>& arr , int n){
int prev=0 , current;
vector<int> p1(n+1);
for(int i=1;i<=n;i++){
int current=max(prev+arr[i-1],arr[i-1]);
int current1=max(current,0);
prev=current1;
p1[i]=current1;
}
return p1;
}
vector<int> bestSuffixSum(vector<int>& arr , int n){
int aage=0 , current;
vector<int> s1(n+1);
for(int i=n+1;i>0;i--){
int current=max(aage+arr[i-1],arr[i-1]);
int current1=max(current,0);
aage=current1;
s1[i]=current1;
}
return s1;
}
int sumOf2Subarray(vector<int>& pp , vector<int> &ss, int n){
vector<int> maxPP(n+2,0);
vector<int> maxSS(n+2,0);
int maxsum=0;
for(int i=2;i<n+2;i++){
maxPP[i]=max(maxPP[i-1],pp[i-1]);
}
for(int i=n;i>=0;i--){
maxSS[i]=max(maxSS[i+1],ss[i]);
}
}
int main() {
vector<int> arr={-1,1,2,3,4,-2,6,-10};
int n=arr.size();
vector<int> pp=bestPrefixSum(arr , n);
vector<int> ss=bestSuffixSum(arr , n);
for(int i=1;i<=n;i++){
cout<<pp[i]<<" ";
}
cout<<endl;
for(int i=1;i<=n;i++){
cout<<ss[i]<<" ";
}
cout<<endl;
for(int i=1;i<n;i++){
cout<<pp[i]<<" "<<ss[i+1]<<endl;
}
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7Cgp2ZWN0b3I8aW50PiBiZXN0UHJlZml4U3VtKHZlY3RvcjxpbnQ+JiBhcnIgLCBpbnQgbil7CglpbnQgcHJldj0wICwgY3VycmVudDsKCXZlY3RvcjxpbnQ+IHAxKG4rMSk7Cglmb3IoaW50IGk9MTtpPD1uO2krKyl7CgkJaW50IGN1cnJlbnQ9bWF4KHByZXYrYXJyW2ktMV0sYXJyW2ktMV0pOwoJCWludCBjdXJyZW50MT1tYXgoY3VycmVudCwwKTsKCQlwcmV2PWN1cnJlbnQxOwoJCXAxW2ldPWN1cnJlbnQxOwoJfQoJcmV0dXJuIHAxOwp9Cgp2ZWN0b3I8aW50PiBiZXN0U3VmZml4U3VtKHZlY3RvcjxpbnQ+JiBhcnIgLCBpbnQgbil7CglpbnQgYWFnZT0wICwgY3VycmVudDsKCXZlY3RvcjxpbnQ+IHMxKG4rMSk7Cglmb3IoaW50IGk9bisxO2k+MDtpLS0pewoJCWludCBjdXJyZW50PW1heChhYWdlK2FycltpLTFdLGFycltpLTFdKTsKCQlpbnQgY3VycmVudDE9bWF4KGN1cnJlbnQsMCk7CgkJYWFnZT1jdXJyZW50MTsKCQlzMVtpXT1jdXJyZW50MTsKCX0KCXJldHVybiBzMTsKfQppbnQgc3VtT2YyU3ViYXJyYXkodmVjdG9yPGludD4mIHBwICwgdmVjdG9yPGludD4gJnNzLCBpbnQgbil7Cgl2ZWN0b3I8aW50PiBtYXhQUChuKzIsMCk7Cgl2ZWN0b3I8aW50PiBtYXhTUyhuKzIsMCk7CglpbnQgbWF4c3VtPTA7Cglmb3IoaW50IGk9MjtpPG4rMjtpKyspewoJCW1heFBQW2ldPW1heChtYXhQUFtpLTFdLHBwW2ktMV0pOwoJCQoJfQoJZm9yKGludCBpPW47aT49MDtpLS0pewoJCW1heFNTW2ldPW1heChtYXhTU1tpKzFdLHNzW2ldKTsKCQkKCX0KCgkKfQppbnQgbWFpbigpIHsKCXZlY3RvcjxpbnQ+IGFycj17LTEsMSwyLDMsNCwtMiw2LC0xMH07CglpbnQgbj1hcnIuc2l6ZSgpOwoJdmVjdG9yPGludD4gcHA9YmVzdFByZWZpeFN1bShhcnIgLCBuKTsKCXZlY3RvcjxpbnQ+IHNzPWJlc3RTdWZmaXhTdW0oYXJyICwgbik7Cglmb3IoaW50IGk9MTtpPD1uO2krKyl7CgkJY291dDw8cHBbaV08PCIgICAgICI7Cgl9Cgljb3V0PDxlbmRsOwoJZm9yKGludCBpPTE7aTw9bjtpKyspewoJCWNvdXQ8PHNzW2ldPDwiICAgICAgIjsKCX0KCWNvdXQ8PGVuZGw7Cglmb3IoaW50IGk9MTtpPG47aSsrKXsKCQljb3V0PDxwcFtpXTw8IiAgIjw8c3NbaSsxXTw8ZW5kbDsKCQkKCX0KCXJldHVybiAwOwp9