Pagini recente » Cod sursa (job #2159025) | Cod sursa (job #2704558) | Cod sursa (job #360138) | Cod sursa (job #1650354) | Cod sursa (job #2274925)
#include <fstream>
using namespace std;
ifstream f("ssm.in");
ofstream g("ssm.out");
int sumt=0,lef,righ,s[6000000];
void divide (int a,int b)
{
if(a==b)
{
if(s[a]>sumt)
{
sumt=s[a];
lef=a;
righ=a;
}
return;
}
int c=(a+b)/2;
divide(a,c);
divide(c+1,b);
int sp=0,msp=0,sd=0,msd=0,l,r;
for(int i=c;i>=a;i--)
{
sp=sp+s[i];
if(msp<sp)
{
msp=sp;
l=i;
}
}
for(int j=c+1;j<=b;j++)
{
sd=sd+s[j];
if(msd<sd)
{
msd=sd;
r=j;
}
}
if(msd+msp>sumt)
{
sumt=msd+msp;
lef=l;
righ=r;
}
}
int main()
{
int n;
f>>n;
for(int i=1;i<=n;i++)
{
f>>s[i];
}
divide(1,n);
g<<sumt<<" "<<lef<<" "<<righ;
return 0;
}