Cod sursa(job #858344)

Utilizator SmarandaMaria Pandele Smaranda Data 18 ianuarie 2013 20:29:26
Problema Subsecventa de suma maxima Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.85 kb
#include <cstdio>

using namespace std;

long a [6000011];

int main () {
    long N, i, s, smax, st, dr, inc = 1;

    freopen ("ssm.in", "r", stdin);
    freopen ("ssm.out", "w", stdout);

    scanf ("%ld", &N);
    for (i = 1; i <= N; i ++)
        scanf ("%ld", &a [i]);
    s = a [1];
    smax = a [1];
    for (i = 2; i <= N; i ++)
        if (s + a [i] >= a [i]) {
            s += a [i];
            if (s > smax) {
                smax = s;
                dr = i;
                st = inc;
            }
            if (s == smax && st == inc)
                dr = i;
        }
        else {
            s = a [i];
            inc = i;
             if (s > smax) {
                smax = s;
                dr = i;
                st = inc;
            }
        }
    printf ("%ld %ld %ld", smax, st, dr);
    return 0;
}