Cod sursa(job #2068530)

Utilizator savigunFeleaga Dragos-George savigun Data 18 noiembrie 2017 00:51:04
Problema Subsecventa de suma maxima Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1 kb
#include <iostream>
#include <fstream>
using namespace std;

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

int n, sol, sum, l, r;
int bl, br;

void update_sum(int nr, int i) {
    sum = nr;
    l = i;
    r = i;
}

void update_sol() {
    if (sum == sol) {
        if (l < bl) {
            bl = l;
            br = r;
        } else if (l == bl) {
            if (r - l + 1 < br - bl + 1) {
                bl = l;
                br = r;
            }
        }
    } else if (sum > sol) {
        sol = sum;
        bl = l;
        br = r;
    }
}



int main()
{
    ios::sync_with_stdio(false);
    in.tie(NULL);
    out.tie(NULL);

    in >> n;
    bl = n;

    sum = sol = -2e9;
    for (int i = 1, nr; i <= n; ++i) {
        in >> nr;
        if (nr > sum + nr) {
            update_sum(nr, i);
        } else {
            sum += nr;
            r = i;
        }
        update_sol();
    }

    out << sol << " " << bl << " " << br;

    return 0;
}