Cod sursa(job #2274925)

Utilizator DursinaAlexandruDursina Ionut Alexandru DursinaAlexandru Data 2 noiembrie 2018 17:34:20
Problema Subsecventa de suma maxima Scor 75
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.93 kb
#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;
}