Pagini recente » Cod sursa (job #762786) | Cod sursa (job #3206636) | Cod sursa (job #147080) | Cod sursa (job #1996603) | Cod sursa (job #2308609)
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("ssm.in");
ofstream g("ssm.out");
long long maxim (long long a,long long b,long long c)
{
long long maxi;
if(a>b)
maxi=a;
else
maxi=b;
if(c>maxi)
maxi=c;
return maxi;
}
long long divide(long long v[],long long left,long long right)
{
long long sleft=0,sright=0,s=0,r1,r2,sum;
if(left==right)
{g<<left<<" "<<right<<endl;
return v[right];}
long long c=(left+right)/2;
r1=divide(v,left,c);
r2=divide(v,c+1,right);
long long i;
for(i=c; i>=left; i--)
{s+=v[i];
if(s>sleft)
sleft=s;
}
s=0;
for(i=c; i<right; i++)
{s+=v[i];
if(s>sright)
sright=s;}
sum=sleft+sright;
return maxim(r1,r2,sum);
}
int main()
{
long long v[6000001],n,i;
f>>n;
for(i=0; i<n; i++)
f>>v[i];
divide(v,0,n-1);
return 0;
}