Cod sursa(job #1730918)

Utilizator codebreaker24Tivadar Ionut codebreaker24 Data 17 iulie 2016 20:20:23
Problema Subsecventa de suma maxima Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.53 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 bestbeg = 1;
int bestend = 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 < bestbeg)
                {

                    bestsum = sum;
                    bestbeg = currentbeg;
                    bestend = currentend;
                }
                if(currentbeg == bestbeg && bestend-bestbeg > currentbeg-currentend)
                {
                    bestsum = sum;
                    bestbeg = currentbeg;
                    bestend = currentend;

                }

            }


            bestsum = sum;
            bestbeg = currentbeg;
            bestend = currentend;

        }





    }
    inFile.close();

}

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