Cod sursa(job #542751)

Utilizator vladbagrinVlad Bagrin vladbagrin Data 26 februarie 2011 22:12:20
Problema Subsecventa de suma maxima Scor 95
Compilator cpp Status done
Runda Arhiva educationala Marime 0.94 kb
#include <fstream>
#include <iostream>

using namespace std;

void ssm(int *v, int n)
{
    int bestmax, best, imax, ic, jmax, jc;
    imax = ic = jmax = jc = 0;
    bestmax = best = 0;

    int i = 0;
    while (i < n)
    {
        while (i < n && best + v[i] >= 0)
        {
            best += v[i];
            jc = i++;
            
            if (best > bestmax)
            {
                imax = ic;
                jmax = jc;
                bestmax = best;
            }
        }
        best = 0;
        ic = i + 1;
        jc = ic;
        i++;
    }

    imax++;
    jmax++;

    ofstream out("ssm.out", ofstream::out);
    out << bestmax << " " << imax << " " << jmax;
    out.flush();
    out.close();
}

int main()
{
    ifstream file("ssm.in", ifstream::in);
    int n;
    int *v;

    file >> n;
    v = new int[n];
    for (int i = 0; i < n; i++)
        file >> v[i];

    file.close();

    ssm(v, n);

    delete [] v;
    return 0;
}