Cod sursa(job #3208322)

Utilizator AlexInfoIordachioaiei Alex AlexInfo Data 28 februarie 2024 11:49:53
Problema Subsecventa de suma maxima Scor 65
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.71 kb
#include <bits/stdc++.h>

using namespace std;

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

const int NMAX = 6e6+5;

long long n, v[NMAX], s[NMAX], maxi, inds, indf;
pair<int, int> smin[NMAX];

int main()
{
    in>>n;
    for (int i=1; i<=n; i++)
    {
        in>>v[i];
        s[i]=s[i-1]+v[i];
        if (s[i]<smin[i-1].first)
            smin[i].first = s[i], smin[i].second = i;
        else smin[i].first = smin[i-1].first, smin[i].second = smin[i-1].second;
         //suma minima dintre sumele de la 1 la 2, 3, ..., i

        if (s[i]-smin[i].first>maxi)
            maxi = s[i]-smin[i].first, inds = smin[i].second+1, indf = i;
    }
    out<<maxi<<' '<<inds<<' '<<indf;


}