Cod sursa(job #415170)

Utilizator dragos.denaDena Dragos dragos.dena Data 10 martie 2010 22:56:48
Problema Subsecventa de suma maxima Scor 0
Compilator c Status done
Runda Arhiva educationala Marime 0.63 kb
#include <stdio.h>
#define N 6000000
#define max(a,b) (a > b) ? a:b

int main(int argc, char** argv){
    freopen("ssm.in", "r", stdin);
    freopen("ssm.out", "w", stdout);
    int a[N], b[N], i, n, maxg, id_maxg;

    scanf("%d", &n);
    for(i = 0; i < n; i++)
        scanf("%d", a+i);

    maxg = b[0] = a[0];
    for(i = 1; i < n; i++) {
        b[i] = max(a[i], a[i] + b[i - 1]);
        if(b[i] > maxg) {
            maxg = b[i];
            id_maxg = i;
        }
    }

    for(i = id_maxg; i >= 0; i--)
        if(!(a[i] - b[i])) break;

    printf("%d %d %d\n", maxg, i + 1, id_maxg + 1);
    return 0;
}