Cod sursa(job #2719718)

Utilizator AndiAndi39Sabo Andrei Claudiu AndiAndi39 Data 10 martie 2021 10:57:10
Problema Subsecventa de suma maxima Scor 70
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.93 kb
#include<iostream>
#include<fstream>
#include<climits>

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

#define nrm 6000005
int n;
int sume[nrm];
int smin[nrm];
int p[nrm];

void citire()
{
    fin>>n;
    for(int i=1;i<=n;i++)
    {
        int x;
        fin>>x;
        sume[i]=sume[i-1]+x;
    }
}

int main ()
{
    citire();

    int start,minim=0,maxim=INT_MIN,stop,pos;
    for(int i=1;i<=n;i++)
    {
        if(sume[i]<minim)
        {
            minim=sume[i];
            smin[i]=sume[i];
            pos=i;
            p[i]=pos;
        }
        else
        {
            smin[i]=minim;
            p[i]=pos;

        }
        if(maxim<sume[i]-smin[i])
        {
            maxim=sume[i]-smin[i];
            start=p[i];
            stop=i;
        }
    }
    fout<<maxim<<" "<<start+1<<" "<<stop;
    fin.close();
    fout.close();
    return 0;
}