Cod sursa(job #3222693)

Utilizator emiliagavrilgavril emilia emiliagavril Data 11 aprilie 2024 12:46:55
Problema Subsecventa de suma maxima Scor 95
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.93 kb
#include <bits/stdc++.h>

using namespace std;

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

const int Nmax=6000005;

int n, x, s[Nmax],minim=INT_MAX,sol=INT_MIN,pozmin=1,pozmax,l=INT_MAX,minb;

int main()
{
    fin>>n>>x;
    s[1]=x;
    for(int i=2; i<=n; i++)
    {
        fin>>x;
        s[i]=s[i-1]+x;
    }
    for(int j=1; j<=n; j++)
    {
        if(s[j]<minim)
        {
            minim=s[j];
            pozmin=j;
        }
        if(s[j]-s[pozmin]>sol)
        {
            minb=pozmin+1;
            sol=s[j]-s[pozmin];
            pozmax=j;
            l=pozmax-pozmin+1;
        }
        else if(s[j]-s[pozmin]==sol)
        {
            if(l<j-pozmin+1)
            {
                minb=pozmin+1;
                sol=s[j]-s[pozmin];
                pozmax=j;
                l=pozmax-pozmin+1;
            }
        }
    }
    fout<<sol<<' '<<minb<<' '<<pozmax;
    return 0;
}