Cod sursa(job #3238812)

Utilizator SilviuC25Silviu Chisalita SilviuC25 Data 30 iulie 2024 18:51:55
Problema Subsecventa de suma maxima Scor 70
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.85 kb
#include <bits/stdc++.h>
using namespace std;

const int MOD = 1e9 + 7;
const int MAX_NUM = 6000005;

int a[MAX_NUM], n, k;
long long prefixSum[MAX_NUM];

ifstream fin("ssm.in");
ofstream fout("ssm.out");

int main() {
    ios::sync_with_stdio(false);
    cin.tie(nullptr);
    fin >> n;
    int sum = 0, currentSum = 0;
    for (int i = 1; i <= n; ++i) {
        fin >> a[i];
        prefixSum[i] = prefixSum[i - 1] + a[i];
    }
    int minSum = 0, left, l, r;
    for (int i = 1; i <= n; ++i) {
        if (prefixSum[i - 1] < minSum) {
            minSum = prefixSum[i - 1];
            left = i;
        }
        currentSum = prefixSum[i] - minSum;
        if (currentSum > sum) {
            sum = currentSum;
            l = left;
            r = i;
        }
    }
    fout << sum << " " << l << " " << r << "\n";
    return 0;
}