Cod sursa(job #2926946)

Utilizator gabriel.9619Gabriel Stefan Tita gabriel.9619 Data 18 octombrie 2022 23:05:28
Problema Subsecventa de suma maxima Scor 90
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.62 kb
#include <fstream>
using namespace std;
ifstream fin("ssm.in");
ofstream fout("ssm.out");
int main()
{
    int n, poz=1, j=0, i, pozmax, jmax, lungime=0, lungimemax=-1;
    long long x, s=0, smax=0;
    fin>>n;
    if(n==1)
    {
        fin>>x;
        fout<<x<<" "<<1<<" "<<1;
        return 0;
    }
    for(i=1;i<=n;i++)
    {
        fin>>x;
        if(s+x>x)
        {
            j++;
            s=1LL*s+x;
            lungime=j-poz+1;
            if(s>smax)
            {
                smax=1LL*s;
                pozmax=poz;
                jmax=j;
                lungimemax=lungime;
            }
            else
            {
                if(s==smax)
                {
                    if(lungime<lungimemax)
                    {
                        smax=1LL*s;
                        pozmax=poz;
                        jmax=j;
                        lungimemax=lungime;
                    }
                }
            }
        }
        else
        {
            s=1LL*x;
            poz=j+1;
            j++;
            lungime=1;
            if(s>smax)
            {
                smax=1LL*s;
                pozmax=poz;
                jmax=j;
                lungimemax=lungime;
            }
            else
            if(s==smax)
            {
                if(lungime<lungimemax)
                {
                    smax=1LL*s;
                    pozmax=poz;
                    jmax=j;
                        lungimemax=lungime;
                }
            }
        }
    }
    fout<<smax<<" "<<pozmax<<" "<<jmax;
    return 0;
}