Cod sursa(job #3142294)
Utilizator | Data | 20 iulie 2023 14:28:24 | |
---|---|---|---|
Problema | Subsecventa de suma maxima | Scor | 0 |
Compilator | c-64 | Status | done |
Runda | Arhiva educationala | Marime | 1.9 kb |
#include <stdio.h>
// dp[i] cea mai buna suma a unei secventa care se termina in pozitia i
int main(void)
{
int n;
scanf("%d",&n);
int x;
int ant;
int start,stop;
int max=-1111111;
int start_max,stop_max;
for(int i=1;i<=n;i++)
{
scanf("%d",&x);
if(i==1)
{
start=1;
stop=1;
ant=x;
}
else
{
if(ant+x<x)
{
ant=x;
start=i;
stop=i;
if(max<x)
{
max=x;
start_max=start;
stop_max=stop;
}
if(max==x )
{
if((stop-start) < (stop_max-start_max))
{
start_max=start;
stop_max=stop;
}
}
}
else
{
ant=ant+x;
stop=i;
if(max<ant)
{
max=ant;
start_max=start;
stop_max=stop;
}
if(max==ant )
{
if((stop-start) < (stop_max-start_max))
{
start_max=start;
stop_max=stop;
}
}
}
}
}
printf("%d %d %d",max,start_max,stop_max);
return 0;
}