Pagini recente » Cod sursa (job #1773948) | Cod sursa (job #2797445)
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin ("ssm.in");
ofstream fout ("ssm.out");
int n,x,a[6000001],m,p,u;
solve (int a[],int l,int r)
{
if (l==r) {p=l;u=r;return a[l];}
int sol=0;
int mid=(l+r)/2;
sol=solve(a,l,mid);
sol=max(sol,solve(a,mid+1,r));
if (sol<solve(a,mid+1,r)) {sol=solve(a,mid+1,r);p=l;u=r;}
int maxl=-2147483647;
int sum=0,i=0;
for (int st=mid;st>=l;st--)
{sum=sum+a[st];
if (sum>maxl) {maxl=sum;i=st;}}
int maxr=-2147483647;
sum=0;int j=0;
for (int dr=mid+1;dr<=r;dr++)
{sum=sum+a[dr];
if (sum>maxr) {maxr=sum;j=dr;}}
if (sol<maxl+maxr) {sol=maxl+maxr;p=i;u=j;}
return sol;
}
int main()
{
fin >>n;
for (int i=1;i<=n;i++)
{fin >>a[i];}
int i=1,j=n;
int sol=solve(a,i,j);
fout <<sol<<' '<<p<<' '<<u;
return 0;
}