Cod sursa(job #3142295)

Utilizator rose.stoicaStoica Rose-Marie rose.stoica Data 20 iulie 2023 14:32:29
Problema Subsecventa de suma maxima Scor 100
Compilator c-64 Status done
Runda Arhiva educationala Marime 1.98 kb
#include <stdio.h>



// dp[i] cea mai buna suma a unei secventa care se termina in pozitia i
int main(void)
{
   
    
    int n;
    FILE* f=fopen("ssm.in","r");
    FILE* f1=fopen("ssm.out","w");
    fscanf(f,"%d",&n);
    int x;
    int ant;
    int start,stop;
    int max=-1111111;
    int start_max,stop_max;
    for(int i=1;i<=n;i++)
        {
            fscanf(f,"%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;
                            }
                    }
                    
                    
                    
                }
            }
         
        }
    fprintf(f1,"%d %d %d",max,start_max,stop_max);
    return 0;
}