Pagini recente » Cod sursa (job #2749443) | Cod sursa (job #2325647) | Cod sursa (job #2583697) | Cod sursa (job #1637415) | Cod sursa (job #2798626)
#include <fstream>
#include <climits>
using namespace std;
ifstream cin("ssm.in");
ofstream cout("ssm.out");
long long v[6000005];
long long ssm(int l,int r,int &i,int &j)
{
int p1,p2,mid,sol=0,st,dr;
long long mal=-999999999999999,mar=-9999999999999,s;
if (l==r)
{
i=l;
j=l;
return v[l];
}
mid=(l+r)/2;
sol=ssm(l,mid,i,j);
s=ssm(mid+1,r,p1,p2);
if (sol<s) {sol=s;i=p1;j=p2;}
s=0;
for (st=mid;st>=l;st--)
{
s=s+v[st];
if (mal<s) {mal=s;p1=st;}
}
s=0;
for (dr=mid+1;dr<=r;dr++)
{
s=s+v[dr];
if (mar<s) {mar=s;p2=dr;}
}
if (sol<mal+mar) {sol=mal+mar;i=p1;j=p2;}
return sol;
}
int i,j,n;
long long s;
int main()
{
cin >>n;
for (i=1;i<=n;i++)
{
cin >>v[i];
}
s=ssm(1,n,i,j);
cout <<s<<" "<<i<<" "<<j;
return 0;
}