Cod sursa(job #1600055)

Utilizator tudorgalatanRoman Tudor tudorgalatan Data 14 februarie 2016 17:33:40
Problema Subsecventa de suma maxima Scor 40
Compilator cpp Status done
Runda Arhiva educationala Marime 0.91 kb
#include <fstream>
#define InFile  "ssm.in"
#define OutFile "ssm.out"
#define MAX 100001

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;
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;
}