Cod sursa(job #2957711)

Utilizator DobraVictorDobra Victor Ioan DobraVictor Data 23 decembrie 2022 13:02:44
Problema Subsecventa de suma maxima Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.85 kb
#include <stdio.h>
#include <stdlib.h>
#include <stdint.h>
#include <limits.h>

const int32_t MAX_N = 6000000;

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

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

    for(int32_t i = 0; i < n; ++i) {
        int32_t x;

        fscanf(fin, "%i", &x);

        if(i && sum[i - 1] >= 0)
            sum[i] = sum[i - 1] + x;
        else
            sum[i] = x;
    }

    int32_t begin = 0, max = INT_MIN, maxBegin = 0, maxEnd = 0;
    for(int32_t i = 0; i < n; ++i) {
        if(i && sum[i - 1] < 0)
            begin = i;

        if(sum[i] > max) {
            max = sum[i];
            maxBegin = begin;
            maxEnd = i;
        }
    }
    ++maxBegin;
    ++maxEnd;

    fprintf(fout, "%i %i %i", max, maxBegin, maxEnd);

    fclose(fin);
    fclose(fout);

    return 0;
}