Cod sursa(job #2269845)

Utilizator CristianaMelinceanuMelinceanu Cristiana CristianaMelinceanu Data 26 octombrie 2018 17:31:24
Problema Subsecventa de suma maxima Scor 5
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.11 kb
#include <iostream>
#include <fstream>

using namespace std;

int cl,cr;
int divide(int left,int right,int v[100])
{

    int m=(left+right)/2;
    int r1,r2,r3;
    if(m==right)
        return v[m];
    r1=divide(left,m,v);
    r2=divide(m+1,right,v);
    int s=0,sleft=0,sright=0;
    for(int i=m;i>=left;i--)
    {
        s=s+v[i];
        if(sleft<s)
        {
            sleft=s;
            cl=i;
        }
    }
    s=0;
    for(int i=m+1;i<=right;i++)
    {
        s+=v[i];
        if(sright<s)
           {
               sright=s;
               cr=i;
           }
    }
    r3=sleft+sright;

    int maxi;
    if(r1>r2)
    {
        if(r1>r3)
            return r1;
        else
        {
            if(r1<r3)
                return r3;
        }
    }
    else
    {
        if(r2<r3)
            return r3;
        else r2;
    }

}

int main()
{
    int n,v[100];
    ifstream f("ssm.in");
    ofstream g("ssm.out");
    f>>n;
    for(int i=1;i<=n;i++)
        f>>v[i];
    int sum=divide(1,n,v);
    g<<sum<<" "<<cl<<" "<<cr;


    return 0;
}