Cod sursa(job #1674206)

Utilizator razvan3895Razvan-Mihai Chitu razvan3895 Data 4 aprilie 2016 14:51:56
Problema Subsecventa de suma maxima Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.89 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]; --start);
        for (; start > 0 && v[start - 1] == 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;
}