Cod sursa(job #3361564)

Utilizator ssofiaSava Sofia-Maria ssofia Data 25 iulie 2026 19:16:23
Problema Subsecventa de suma maxima Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.96 kb
#include <iostream>
using namespace std;

ifstream fin("ssm.in");
ofstream fout("ssm.out");
long long v[6000001];

int main()
{
    int n, i, primul, ultimul, indiceSt;
    long long sum, mx;

    fin >> n;

    for(i = 1; i <= n; i++)
        fin >> v[i];

    sum = v[1];
    mx = v[1];

    indiceSt = 1;
    primul = 1;
    ultimul = 1;

    for(i = 2; i <= n; i++){
        if(v[i] > sum + v[i]){
            sum = v[i];
            indiceSt = i;
        }
        else{
            sum = sum + v[i];
        }

        if(sum > mx){
            mx = sum;
            primul = indiceSt;
            ultimul = i;
        }
        else if(sum == mx){
            if(indiceSt < primul){
                primul = indiceSt;
                ultimul = i;
            }
            else if(indiceSt == primul && i - indiceSt < ultimul - primul){
                ultimul = i;
            }
        }
    }

    fout << mx << " " << primul << " " << ultimul << "\n";

    return 0;
}