Cod sursa(job #1266163)

Utilizator diana97Diana Ghinea diana97 Data 18 noiembrie 2014 13:35:07
Problema Subsecventa de suma maxima Scor 90
Compilator cpp Status done
Runda Arhiva educationala Marime 0.79 kb
#include <iostream>
#include <fstream>

using namespace std;

ifstream f ("ssm.in");
ofstream g ("ssm.out");

const int NMAX = 6000000 + 1;
int n, a_max, b_max, s_max, s[NMAX];

inline void update(int valoare, int a, int b) {
    s_max = valoare;
    a_max = a;
    b_max = b;
}

void rezolva() {
    int x, a, b;
    f >> n >> s[1];
    update(s[1], 1, 1);
    for (int i = 2; i < n; i++) {
        f >> x;
        if (x + s[i - 1] >= x) {
            b++;
            s[i] = s[i - 1] + x;
        }
        else {
            a = b = i;
            s[i] = x;
        }
        if (s[i] == s_max)
            if (b - a < b_max - a_max) update(s[i], a, b);
        if (s[i] > s_max) update(s[i], a, b);
    }
    g << s_max << ' ' << a_max << ' ' << b_max << '\n';
}

int main() {
    rezolva();
    return 0;
}