Cod sursa(job #3233217)

Utilizator MirceaDonciuLicentaLicenta Mircea Donciu MirceaDonciuLicenta Data 2 iunie 2024 19:57:27
Problema Subsecventa de suma maxima Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.97 kb
#include <iostream>
#include <fstream>
#include <vector>
#include <limits.h>

using namespace std;

int main() {
    ifstream infile("ssm.in");
    ofstream outfile("ssm.out");

    if (!infile || !outfile) {
        cerr << "Error opening file" << endl;
        return 1;
    }

    int N;
    infile >> N;

    vector<int> S(N);
    for (int i = 0; i < N; ++i) {
        infile >> S[i];
    }

    long long max_sum = LLONG_MIN;
    long long current_sum = 0;
    int start = 0, end = 0, temp_start = 0;

    for (int i = 0; i < N; ++i) {
        current_sum += S[i];

        if (current_sum > max_sum) {
            max_sum = current_sum;
            start = temp_start;
            end = i;
        }

        if (current_sum < 0) {
            current_sum = 0;
            temp_start = i + 1;
        }
    }

    outfile << max_sum << " " << start + 1 << " " << end + 1 << endl;

    infile.close();
    outfile.close();

    return 0;
}