Pagini recente » Cod sursa (job #1357500) | Cod sursa (job #3231544) | Cod sursa (job #3153617) | Cod sursa (job #1206445) | Cod sursa (job #2308603)
#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;
}