Pagini recente » Cod sursa (job #1446624) | Cod sursa (job #2888980) | Cod sursa (job #2862168) | Cod sursa (job #297812) | Cod sursa (job #1805435)
#include <cstdio>
#include <climits>
#define max_lenght 6000010
using namespace std;
int n,v[max_lenght],suma=INT_MIN,start,sfarsit;
void mort_de_rire(int li,int lf)
{
if(li==lf)
{
if(suma<v[li])
{
suma=v[li];
start=sfarsit=li;
}
return;
}
int m=(li+lf)/2;
mort_de_rire(li,m);
mort_de_rire(m+1,lf);
int max_suma_stanga=INT_MIN,max_suma_dreapta=INT_MIN;
int suma_stanga=0,ind_stanga;
int suma_dreapta=0,ind_dreapta;
int i;
for(i=m;i>=li;i--)
{
suma_stanga+=v[i];
if(max_suma_stanga<suma_stanga)
{
max_suma_stanga=suma_stanga;
ind_stanga=i;
}
}
for(i=m+1;i<=lf;i++)
{
suma_dreapta+=v[i];
if(max_suma_dreapta<suma_dreapta)
{
max_suma_dreapta=suma_dreapta;
ind_dreapta=i;
}
}
if(max_suma_dreapta+max_suma_stanga>suma)
{
suma=max_suma_dreapta+max_suma_stanga;
start=ind_stanga;
sfarsit=ind_dreapta;
}
}
int main()
{
FILE *f=fopen("ssm.in","r");
FILE *g=fopen("ssm.out","w");
int i;
fscanf(f,"%d",&n);
for(i=1;i<=n;i++)
fscanf(f,"%d",&v[i]);
mort_de_rire(1,n);
fprintf(g,"%d %d %d ",suma,start,sfarsit);
fclose(f);
fclose(g);
return 0;
}