Cod sursa(job #2400472)

Utilizator vlad414141414141Vlad Ionescu vlad414141414141 Data 8 aprilie 2019 19:52:52
Problema Subsecventa de suma maxima Scor 95
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.06 kb
#include <iostream>
#include <fstream>
#include <vector>

using namespace std;

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

vector <int> v;

int main()
{
    int n;
    fin >> n;
    for (int i=0;i<n;++i)
    {
        int x;
        fin >> x;
        v.push_back(x);
    }
    long long scur=0, st, maxim=0, dr, stcur, drcur;
    bool ok=true;
    st=0;
    for (int i=0;i<n;++i)
    {
        scur+=v[i];
        if (scur<0)
        {
            scur=0;
            stcur=i+1;
        }
        else if (scur>maxim)
        {
            maxim=scur;
            st=stcur;
            dr=i;
        }
        else if (scur==maxim)
        {
            if(stcur<st)
            {
                st=stcur;
                dr=i;
            }
            else if (stcur==st)
            {
                if (i-stcur<dr-st)
                {
                    st=stcur;
                    dr=i;
                }
            }
        }
    }

    fout << maxim << " " << st+1 << " " << dr+1;

    return 0;
}