Cod sursa(job #1266171)

Utilizator diana97Diana Ghinea diana97 Data 18 noiembrie 2014 13:45:15
Problema Subsecventa de suma maxima Scor 95
Compilator cpp Status done
Runda Arhiva educationala Marime 0.77 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;
int 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;
    f >> n >> s[1];
    update(s[1], 1, 1);
    for (int i = 2; i <= n; i++) {
        f >> x;
        if (s[i - 1] > 0) {
            s[i] = s[i - 1] + x;
        }
        else {
            a = i;
            s[i] = x;
        }
        if (s[i] == s_max)
            if (i - a < b_max - a_max) update(s[i], a, i);
        if (s[i] > s_max) update(s[i], a, i);
    }
    g << s_max << ' ' << a_max << ' ' << b_max << '\n';
}

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