Cod sursa(job #1643860)

Utilizator larecursividadLa Recursividad larecursividad Data 9 martie 2016 20:28:49
Problema Subsecventa de suma maxima Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.94 kb
#include <fstream>
#include <climits>
#define InFile  "ssm.in"
#define OutFile "ssm.out"
#define MAX 6000001

using namespace std;

void read ();
void solve ();
void print ();

unsigned int N;
unsigned int a[MAX];

int sum;
unsigned int aux;
unsigned int i;

int maxSum = INT_MIN;
unsigned int leftPos, rightPos;

int main ()
{
    read ();
    solve ();
    print ();
    return 0;
}

void read ()
{
    ifstream fin (InFile);
    fin >> N;
    for (i=1; i<=N; i++)
        fin >> a[i];
}

void solve ()
{
    for (i=1; i<=N; i++)
    {
        if (sum < 0)
        {
            aux = i;
            sum = a[i];
        }
        else
            sum += a[i];
        if (sum > maxSum)
        {
            maxSum = sum;
            leftPos = aux;
            rightPos = i;
        }
    }
}

void print ()
{
    ofstream fout (OutFile);
    fout << maxSum << ' ' << leftPos << ' ' << rightPos;
}