Cod sursa(job #1674199)

Utilizator razvan3895Razvan-Mihai Chitu razvan3895 Data 4 aprilie 2016 14:48:49
Problema Subsecventa de suma maxima Scor 5
Compilator cpp Status done
Runda Arhiva educationala Marime 0.86 kb
#include <cstdio>
#include <vector>


int n;
int v[6000000];
int ssm[6000000];

void find_ssm() {
        int end = 0;
        int start;

        for (int i = 0; i < n; ++i) {
                if (i > 0 && ssm[i - 1] >= 0) {
                        ssm[i] = v[i] + ssm[i - 1];
                } else {
                        ssm[i] = v[i];
                }

                if (ssm[i] >= ssm[end]) {
                        end = i;
                }

        }

        printf("%d ", ssm[end]);
        for (start = end; ssm[start] != v[start] || v[start] != 0; --start);

        printf("%d %d\n", start + 1, end + 1);

}

int main() {

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

        scanf("%d", &n);
        for (int i = 0; i < n; ++i) {
                scanf("%d", &v[i]);
        }

        find_ssm();

        return 0;
}