Cod sursa(job #2787508)

Utilizator chiriacandrei25Chiriac Andrei chiriacandrei25 Data 23 octombrie 2021 16:38:28
Problema Subsecventa de suma maxima Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 2.08 kb
#include <fstream>
#include <algorithm>
using namespace std;
ifstream fin("ssm.in");
ofstream fout("ssm.out");
int nn,a,i=1,j=1, m=1, n=1, w=1, y=1, x,ok=0,nega=0;
long long sum=0, maxsum=0,maxi,sumi=0;
int main()
{
    fin>>nn;
    for(a=1;a<=nn;a++)
    {
        fin>>x;
        sum=sum+x;
        if(ok==0 or sumi>sum)
        {
            sumi=sum;
            //ok=1;
            j=a;
        }
        if(sum-sumi>maxsum)
        {
            maxsum=sum-sumi;
            m=j+1;
            n=a;
        }
        if(ok==0 or x>maxi)
        {
            maxi=x;
            w=a;
            y=a;
            ok=1;
        }
    }
    if(sum-sumi>maxsum)
    {
        maxsum=sum-sumi;
        m=j+1;
        n=a;
    }
    if(sum!=sumi) fout<<maxsum<<" "<<m<<" "<<n;
    else fout<<maxi<<" "<<w<<" "<<y;
    /*for(a=1;a<=nn;a++)
    {
        fin>>x;
        if(a==1 or x>maxi)
        {
            maxi=x;
            w=a;
            y=a;
        }
        if(x>0 and nega==0)
        {
            if(ok==0)
            {
                ok=1;
                m=a;
                n=m;
            }
            else
            {
                n++;
            }
            sum=sum+x;
        }
        else if(x>0 and nega==1)
        {
            if(abs(sumi)<x)
            {
                sum+=sumi;
                sum+=x;
                n=a;
            }
            else
            {
                if(sum>maxsum)
                {
                    maxsum=sum;
                    i=n;
                    j=m;
                }
                sum=x;
                sumi=0;
                m=a;
                n=a;
            }
            nega=0;
        }
        else if(x<=0)
        {
            nega=1;
            sumi+=x;
        }
    }
    if(sum>maxsum)
    {
        maxsum=sum;
        i=n;
        j=m;
    }
    if(sum==0 and maxsum==0)
    {
        fout<<maxi<<" "<<w<<" "<<x;
    }
    else
    {
        fout<<maxsum<<" "<<j<<" "<<i;
    }*/
    return 0;
}