Pagini recente » Cod sursa (job #2674406) | Cod sursa (job #738715) | Cod sursa (job #2609218) | Cod sursa (job #2030798) | Cod sursa (job #2269858)
#include <iostream>
#include <fstream>
using namespace std;
int divide(int v[],int left,int right)
{
int mid=(left+right)/2;
if(left>=right) return 0;
int r1=divide(v,left,mid);
int r2=divide(v,mid+1,right);
int sleft=0,sright=0,s=0;
for(int i=mid;i>=left;i--)
{
s+=v[i];
if(sleft<s) sleft=s;
}
s=0;
for(int i=right;i>mid;i--)
{
s+=v[i];
if(sright<s) sright=s;
}
int r3=sleft+sright;
if(r1>r2&&r1>r3)
return r1;
if(r2>r3)
return r2;
return r3;
}
int main()
{
freopen("secventa.in","r",stdin);
freopen("secventa.out","w",stdout);
int n;
cin>>n;
int v[n];
for(int i=0;i<n;i++)
cin>>v[i];
cout<<divide(v,0,n-1)<<" "<<v[0]<<" "<<v[n-1];
cout.flush();
return 0;
}