Cod sursa(job #762988)

Utilizator ioana26Ioana Andronescu ioana26 Data 30 iunie 2012 17:45:29
Problema Subsecventa de suma maxima Scor 100
Compilator c Status done
Runda Arhiva educationala Marime 0.88 kb
/*
Subsecventa de suma maxima - folosind programare dinamica.
*/

#include <stdio.h>
#include <stdlib.h>
#include <limits.h>

#define MAXNUM      6000000

#define max(a, b) ((a > b) ? a : b)

int numere[MAXNUM], n;
int id_start, id_stop, sum_max;

void secv_sum_max () {
    sum_max = INT_MIN;
    int sum = 0;
    int id = 0;
    int i;
    for (i = 0; i < n; i++) {
        if (sum < 0) {
            sum = numere[i];
            id = i;
        }
        else
            sum += numere[i];
        if (sum_max < sum) {
            sum_max = sum;
            id_start = id + 1;
            id_stop = i + 1;
        }
    }
}

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

    int i;
    scanf("%d", &n);
    for (i = 0; i < n; i++)
        scanf("%d", &numere[i]);
    secv_sum_max();
    printf("%d %d %d", sum_max, id_start, id_stop);
    return 0;
}