Cod sursa(job #2592071)

Utilizator nTropicManescu Bogdan Constantin nTropic Data 1 aprilie 2020 00:40:48
Problema Subsecventa de suma maxima Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.85 kb
#include <bits/stdc++.h>

using namespace std;

const int len = 6000005;
int n, a[len];

void kadane(int arr[]) {
    int best_sum = INT_MIN, curr_sum = 0, start_index, end_index, aux_index;

    for (int i = 1; i <= n; i++) {
        if (curr_sum < 0) {
            curr_sum = arr[i];
            aux_index = i;
        }
        else
            curr_sum += arr[i];

        if (best_sum < curr_sum) {
            best_sum = curr_sum;
            start_index = aux_index;
            end_index = i;
        }
    }

    cout << best_sum << " " << start_index << " " << end_index;
}

int main() {
    ios_base::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);

    freopen("ssm.in", "r", stdin);
    freopen("ssm.out", "w", stdout);

    cin >> n;
    for (int i = 1; i <= n; i++)
        cin >> a[i];

    kadane(a);
}