Cod sursa(job #1575716)

Utilizator TopiAlexTopala Alexandru TopiAlex Data 21 ianuarie 2016 19:13:23
Problema Subsecventa de suma maxima Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.94 kb
#include <stdio.h>
#define N_MAX 6000002
#define INFINIT 1 << 21
using namespace std;

int n;
int part[N_MAX];
int best[N_MAX];

inline void citire();

int main()
{
    citire();

    int start = 1;
    int finish = 1;
    int tempStart;
    int bestSum = -INFINIT;
    int min = 0;

    for (int i = 1; i <= n; ++i){
        best[i] = part[i] - min;

        if (best[i] > bestSum){
            bestSum = best[i];
            start = tempStart + 1;
            finish = i;
        }

        if (part[i] < min){
            min = part[i];
            tempStart = i;
        }


    }

    printf("%d %d %d\n", bestSum, start, finish);

    return 0;
}

inline void citire(){
    freopen("ssm.in", "r", stdin);
    freopen("ssm.out", "w", stdout);

    scanf("%d", &n);

    int x;
    part[0] = 0;

    for (int i = 1; i <= n; ++i){
        scanf("%d", &x);
        part[i] = part[i-1] + x;
    }
}