Cod sursa(job #2308603)

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

#include <iostream>
#include <fstream>

using namespace std;

ifstream f("ssm.in");
ofstream g("ssm.out");

int maxim (int a,int b,int c)
{
    int maxi;
    if(a>b)
        maxi=a;
    else
        maxi=b;
    if(c>maxi)
        maxi=c;
    return maxi;
}
int divide(int v[],int left,int right)
{
    int sleft=0,sright=0,s=0,r1,r2,sum;
 if(left==right)
        {g<<left<<" "<<right<<endl;
        return v[right];}
    int c=(left+right)/2;
    r1=divide(v,left,c);
    r2=divide(v,c+1,right);
    int 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()
{
    int v[100],n,i;
    f>>n;
    for(i=0; i<n; i++)
        f>>v[i];
    divide(v,0,n-1);
    return 0;
}