Cod sursa(job #2308609)

Utilizator diaconudanielaDiaconu Daniela diaconudaniela Data 27 decembrie 2018 14:18:34
Problema Subsecventa de suma maxima Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.95 kb

#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;
}