Cod sursa(job #2660858)

Utilizator mihnea_buzoiuMihnea Buzoiu mihnea_buzoiu Data 20 octombrie 2020 18:17:34
Problema Subsecventa de suma maxima Scor 85
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.93 kb
#include <stdio.h>

using namespace std;

int v[6000001];

int main()
{
    int n;
    FILE * fin = fopen("ssm.in", "r");
    FILE * fout = fopen("ssm.out", "w");

    fscanf(fin, "%d", &n);
    for (int i=0; i<n; i++)
        fscanf(fin, "%d", &v[i]);

    int a, a1, s, s1=-1, smax=-2000000000, amax=0, bmax=0;
    for (int i=0; i<n; i++){
        s = v[i];
        if (s1 > 0){
            s += s1;
            a = a1;
        }
        else {
            a = i;
        }

        if (s > smax){
            smax = s;
            amax = a;
            bmax = i;
        }
        else if (s == smax){
            if (i - a < bmax - amax){
                amax = a;
                bmax = i;
            }
        }

        // printf("%d %d %d %d\n", a, a1, s, s1);
        s1 = s;
        a1 = a;
    }

    fprintf (fout, "%d %d %d", smax, amax+1, bmax+1);

    fclose(fin);
    fclose(fout);
}