Cod sursa(job #3321137)

Utilizator IonescuRaresIonescu Rares-Mihai IonescuRares Data 8 noiembrie 2025 11:39:32
Problema Subsecventa de suma maxima Scor 70
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1 kb
#include <iostream>
#include <fstream>
#include <cmath>
#include <algorithm>
#include <cstring>
#include <vector>

using namespace std;

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

int v[6000005];
int s[6000005];
int s_min[6000005];
int ind_s_min[6000005];

int main()
{
    int n;
    fin >> n;
    for(int i=0;i<n;i++){
        fin >> v[i];
        if(i==0){
            s[0]=v[0];
            s_min[0]=v[0];
            ind_s_min[0]=1;
        }
        else{
            s[i]=s[i-1]+v[i];
            if(s[i]<s_min[i-1])
                ind_s_min[i]=i+1;
            else
                ind_s_min[i]=ind_s_min[i-1];
            s_min[i]=min(s_min[i-1],s[i]);
        }
    }
    int max_sum=v[0],ind1,ind2;
    for(int i=1;i<n;i++){
        if(max_sum<=s[i]-s_min[i-1]){
            max_sum=max(max_sum,s[i]-s_min[i-1]);
            ind1=ind_s_min[i-1]+1;
            ind2=i+1;
        }
    }
    fout << max_sum << " " << ind1 << " " << ind2;
    return 0;
}