Cod sursa(job #3289892)

Utilizator Op_IanisOpritescu Ianis Op_Ianis Data 29 martie 2025 01:06:17
Problema Subsecventa de suma maxima Scor 95
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.23 kb
#include <iostream>
#include <fstream>
#include <vector>

class Task {
public:
    void solve() {
        read_input();
        get_result();
    }

private:
    int n;
    std::vector<int> v;

    void read_input() {
        std::ifstream fin("ssm.in");
        fin >> n;
        for (int i = 0, x; i < n; i ++) {
            fin >> x;
            v.push_back(x);
        }
        fin.close();
    }

    void get_result() {
        int maxSum = 0, crtSum = 0, startIdx = 0;
        int start = 0, end = 0;

        for (int i = 0; i < n; i++) {
            if (crtSum < 0) {
                crtSum = v[i], startIdx = i;
            } else {
                crtSum += v[i];
            }

            if (maxSum < crtSum) {
                maxSum = crtSum;
                start = startIdx;
                end = i;
            }
        }

        std::ofstream fout("ssm.out");
        fout << maxSum << " " << start + 1 << " " << end + 1;
        fout.close();
    }
};

int main() {

    auto* task = new (std::nothrow) Task();
    if (!task) {
        std::cerr << "new failed: WTF are you doing? Throw your PC!\n";
        return -1;
    }
    task->solve();
    delete task;
    return 0;
}