Cod sursa(job #2949594)

Utilizator gripzStroescu Matei Alexandru gripz Data 1 decembrie 2022 03:15:31
Problema Subsecventa de suma maxima Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.92 kb
#include <iostream>
#define MAXN 60000

using namespace std;

int N;

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

    cin >> N;
    long long curr, sum;

    // Primul numar.
    cin >> sum;

    int st = 1, dr = 1;
    long long bestI = st, bestJ = dr, bestSum = sum;
    for(int i = 2; i <= N; i++) {
        cin >> curr;
        if(sum + curr >= curr) {
            sum += curr;
            dr++;
        } else {
            sum = curr;
            st = dr = i;
        }

        if(sum > bestSum) {
            bestSum = sum;
            bestI = st;
            bestJ = dr;
        }

        if(sum == bestSum) {
            if(bestJ - bestI > dr - st) {
                bestSum = sum;
                bestI = st;
                bestJ = dr;
            }
        }
    }


    cout << bestSum << " " << bestI << " " << bestJ;

    return 0;
}