Cod sursa(job #1335960)

Utilizator bullseYeIacob Sergiu bullseYe Data 6 februarie 2015 09:57:33
Problema Subsecventa de suma maxima Scor 95
Compilator cpp Status done
Runda Arhiva educationala Marime 0.86 kb
#include <cstdio>
using namespace std;



int main()
{
    int i, n;
    FILE*fin=fopen ("ssm.in", "r");
    fscanf(fin, "%d", &n);
    int spart=0, smin=999999999, pozmin, val;
    int solmax=-999999999, start, finish;

    for (i=1; i<=n; ++i)
    {
        fscanf(fin, "%d", &val);
        spart+=val;
        if (spart<smin)
        {
            smin=spart;
            pozmin=i;//pozitia ultimului element care formeaza suma partiala minima pana la pozitia i
        }
        if (spart>solmax)
        {
            solmax=spart;
            start=1; finish=i;
        }
        if (spart-smin>solmax)
        {
            solmax=spart-smin;
            start=pozmin+1;
            finish=i;
        }
    }

    FILE*fout=fopen ("ssm.out", "w");
    fprintf(fout, "%d %d %d\n", solmax, start, finish);
    fclose(fout);
    return 0;
}