Cod sursa(job #2813374)

Utilizator ecaterinaEcaterina Stefanescu ecaterina Data 6 decembrie 2021 15:04:28
Problema Subsecventa de suma maxima Scor 85
Compilator c-64 Status done
Runda Arhiva educationala Marime 1.07 kb
#include <stdio.h>

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

    int n, start, finish, i, sum, k, summax, fmax, smax;

    fscanf(fin, "%d", &n);

    fscanf(fin, "%d", &k);
    sum = k;
    start = 1;
    finish = 1;
    summax = k;
    smax = 1;
    fmax = 1;
    for (i=1; i<n; i++) {
        fscanf(fin, "%d", &k);
        if (sum>=0) {
            sum+=k;
            finish++;
        } else {
            sum = k;
            start = i+1;
            finish = i+1;
        }

        if (summax==sum) {
            if (smax==start) {///indicele minim
                if (fmax-smax>finish-start) {///lungimea minima
                    smax = start;
                    fmax = finish;
                }
            }
        } else if (summax<sum) {///actualizarea sumei maxime
            summax = sum;
            smax = start;
            fmax = finish;
        }
    }

    fprintf(fout, "%d %d %d\n", summax, smax, fmax);

    fclose(fin);
    fclose(fout);
    return 0;
}