Cod sursa(job #2169267)

Utilizator andrei.gramescuAndrei Gramescu andrei.gramescu Data 14 martie 2018 14:32:55
Problema Subsecventa de suma maxima Scor 55
Compilator cpp Status done
Runda Arhiva educationala Marime 0.78 kb
#include <cstdio>
#include <vector>
#include <queue>
using namespace std;
#define NMAX 600005
int n, a[NMAX];
int i, j, x;
int sum, smax, imax, jmax, isc;
int main(){

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

    fscanf(fin, "%d", &n);
    for(i=1; i<=n; i++)
        fscanf(fin, "%d ", &a[i]);

    sum = smax = a[1];
    imax = isc = jmax = 1;

    for(i=2; i<=n; i++) {
        if(sum + a[i] > a[i])
            sum += a[i];
        else {
            sum = a[i];
            isc = i;
        }

        if(sum > smax) {
            smax = sum;
            imax = isc;
            jmax = i;
        }
    }

    fprintf(fout, "%d %d %d", smax, imax, jmax);

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