Cod sursa(job #2884448)

Utilizator Iuliaaa6Predescu Iulia Iuliaaa6 Data 3 aprilie 2022 17:10:18
Problema Subsecventa de suma maxima Scor 20
Compilator c-64 Status done
Runda Arhiva educationala Marime 1.16 kb
#include <stdio.h>
#include <stdlib.h>

int main()
{
    FILE *in, *out;
    in = fopen("ssm.in", "r");
    out = fopen("ssm.out", "w");
    int n,i,v[1001],sc[1001],st[1001],dr[1001];
    fscanf(in, "%d", &n);
    for(i = 1; i <= n; i++)
    {
        fscanf(in, "%d", &v[i]);
    }
    sc[1] = v[1];
    for(i = 2; i <= n; i++)
    {
        if(sc[i-1] < 0)
        {
            sc[i] = v[i];
            st[i] = i;
            dr[i] = i;
        }
        else
        {
            sc[i] = sc[i-1]+v[i];
            st[i] = st[i-1];
            dr[i] = i;
        }
    }
    int max = sc[1],stmax = 0,drmax = 0;
    for(i = 1; i <= n; i++)
    {
       if(max < sc[i])
       {
           max = sc[i];
           stmax = st[i];
           drmax = dr[i];
       }
       else if(max == sc[i])
       {
           if(stmax > st[i])
           {
               stmax = st[i];
               drmax = dr[i];
           }
           else if(stmax == st[i])
           {
               drmax = dr[i];
           }
       }
    }
    fprintf(out, "%d %d %d", max, stmax, drmax);
    fclose(in);
    fclose(out);
    return 0;
}