Cod sursa(job #2569831)

Utilizator PopescuAndreiAlexandruPopescu Andrei Alexandru PopescuAndreiAlexandru Data 4 martie 2020 13:50:46
Problema Subsecventa de suma maxima Scor 100
Compilator cpp-64 Status done
Runda r3capitusulare Marime 1 kb
#include <iostream>
#include <fstream>
#include <vector>
#include <algorithm>
#include <queue>
#include <cstring>

using namespace std;

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

int n,in,sf,inMAX,sfMAX;

const int INF = - 2000000000;

long long x,Max=0,Sum=INF;

int main()
{
    fin>>n;
    for(int i=1;i<=n;i++)
    {
        fin>>x;
        Max+=x;
        if(i==1)
            in=sf=1;
        else
            sf++;
        if(Max>Sum)
        {
            Sum=Max;
            inMAX=in;
            sfMAX=sf;
        }
        else if(Max==Sum)
        {
            if(in<inMAX)
            {
                inMAX=in;
                sfMAX=sf;
            }
            else if(in==inMAX)
            {
                if((sf-in)<(sfMAX-inMAX))
                    sfMAX=sf;
            }
        }
        if(Max<0)
        {
            Max=0;
            in=i+1;
            sf=i;
        }
    }
    fout<<Sum<<" "<<inMAX<<" "<<sfMAX<<'\n';
}