Cod sursa(job #3292265)

Utilizator CirstiCristian Pavel Cirsti Data 7 aprilie 2025 19:12:20
Problema Subsecventa de suma maxima Scor 95
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.91 kb
#include <iostream>
#include <fstream>
#include <iterator>
#include <vector>

int main() {
    std::ifstream fin("ssm.in");
    std::ofstream fout("ssm.out");

    int n;
    fin >> n;

    std::vector<int>arr;
    std::vector<int>elements;
    std::istream_iterator<int>it(fin);
    elements.push_back(*it);
    arr.push_back(*(it++));

    int maxim = arr.back();
    size_t end_index = 0;
    for (; it != std::istream_iterator<int>(); it++) {
        elements.push_back(*it);
        arr.push_back(*it >= arr.back() + *it ? *it : *it + arr.back());
        if (maxim < arr.back()) {
            maxim = arr.back();
            end_index = arr.size() - 1;
        }
    }

    size_t start_index = end_index;
    while (arr[start_index] != elements[start_index]) {
        --start_index;
    }

    fout << arr[end_index] << " " << start_index + 1 << " " << end_index + 1;

    fin.close();
    fout.close();
    return 0;
}