Cod sursa(job #1730916)

Utilizator codebreaker24Tivadar Ionut codebreaker24 Data 17 iulie 2016 20:18:38
Problema Subsecventa de suma maxima Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.48 kb
#include <iostream>
#include <fstream>
using namespace std;

const int NMAX = 6000000;
void doSum();
void writeData();


int n;
int x;
int currentbeg = 1;
int currentend = 1;
int beg = 1;
int end = 1;
int sum;
int bestsum;

int main()

{


    doSum();
    writeData();


    return 0;
}


void doSum()
{
    ifstream inFile ("ssm.in");
    inFile >> n;
    inFile >> sum;
    bestsum = sum;
    for(int i=2; i<=n; i++)
    {
        inFile >> x;

        if(sum <  0)
        {
            sum = x;
            currentbeg = i;
            currentend = i;

        }
        else
        {
            sum += x;
            currentend++;

        }
        if(sum > bestsum)
        {
            if(sum == bestsum)
            {
                if(currentbeg < beg)
                {

                    bestsum = sum;
                    beg = currentbeg;
                    end = currentend;
                }
                if(currentbeg == beg && end-beg > currentbeg-currentend)
                {
                    bestsum = sum;
                    beg = currentbeg;
                    end = currentend;

                }

            }


            bestsum = sum;
            beg = currentbeg;
            end = currentend;

        }





    }
    inFile.close();

}

void writeData( )
{
    ofstream outFile ("ssm.out");
    outFile << bestsum << " "  <<  beg << " " << end;
    outFile.close();
}