Cod sursa(job #3142417)

Utilizator buntaruButnaru Petre buntaru Data 21 iulie 2023 10:39:34
Problema Subsecventa de suma maxima Scor 75
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.7 kb
#include <iostream>
#include <fstream>
using namespace std;

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

int n , x , s[6000005] , mini;
pair<int , int> smin[6000005];

int main()
{
    int dr , sg , nr;
    fin>>n;
    for(int i=1 ; i<=n ; i++){
        fin>>x;
        s[i]=s[i-1]+x;
        if(i == 1){
            mini=i;
        }
        else if((i!=1)&&(s[i] < s[mini])&&(i!=n)){
            mini=i;
        }
        smin[i].first=s[mini];
        smin[i].second=mini;
    }
    nr=s[1];
    for(int i=2 ; i<=n ; i++)
        if((s[i]-smin[i-1].first)>nr){
            nr=s[i]-smin[i-1].first;
            dr=i;
            sg=smin[i-1].second+1;
        }
    fout<<nr<<' '<<sg<<' '<<dr;
    return 0;
}