Cod sursa(job #1453640)

Utilizator alex.bullzAlexandru Lilian alex.bullz Data 24 iunie 2015 00:29:36
Problema Subsecventa de suma maxima Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1 kb
#include <iostream>
#include <fstream>
#include <vector>

int main() {
    int a, n, start = -1, end = -1, sum = -1, maxSum = -99999, st, max = -999999;
    std::ifstream fin ("ssm.in");
    std::ofstream fout ("ssm.out");
    std::vector<int> v;
    bool negative = true;

    fin >> n;
    for (int i = 1; i <= n; ++i) {
        fin >> a;
        v.push_back (a);
    }

    for (int i = 0; i < n; ++i) {
        if (v[i] > 0) {
            negative = false;
            break;
        }
        if (v[i] > max) {
            max = v[i];
            start = end = i + 1;
        }
    }

    if (negative) {
        fout << max << " " << start << " " << end << "\n";
        return 0;
    }

    for (int i = 1; i <= n; ++i) {
        if (sum < 0) {
            sum = 0;
            st = i + 1;
        }

        if (sum > maxSum) {
            maxSum = sum;
            start = st;
            end = i;
        }

        sum += v[i];
    }

    fout << maxSum << " " << start << " " << end << "\n";

    return 0;
}