Cod sursa(job #2072491)

Utilizator marcogoldPop Mihali Marco Silviu marcogold Data 21 noiembrie 2017 21:44:32
Problema Subsecventa de suma maxima Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.02 kb
#include <iostream>
#include <fstream>

using namespace std;
ofstream fo("ssm.out");
ifstream fi("ssm.in");

int n, a[6000001],S,a1,b1,b2,a2;


void citire()
{
    fi>>n;
    for(int i=1; i<=n; i++)
        fi>>a[i];
}



void ssm ()
{
int SumaMax=-10000000;
    a1=1;
    b1=1;
    a2=1;
    b2=1;
    S=a[1];
    for(int i=2; i<=n; i++)
    {
       if(S+a[i] >= a[i])
       {    S=S+a[i];
           b1++;
       }
       else
       {a1=i;
       b1=i;
           S=a[i];
       }

       if(SumaMax==S)
       {
           if(a1==a2)
           {
               if(b1<b2)
               {
                   a2=a1;
                   b2=b1;
                   SumaMax=S;
               }

           }

       }
       else if( SumaMax<S)
       {
            a2=a1;
                   b2=b1;
                   SumaMax=S;
       }

    }

   fo<<SumaMax<<" "<<a2<<" "<<b2;
}



    int main()
    {
        citire();

        ssm();


        return 0;
    }