Cod sursa(job #881799)

Utilizator gbi250Gabriela Moldovan gbi250 Data 18 februarie 2013 17:18:30
Problema Subsecventa de suma maxima Scor 95
Compilator cpp Status done
Runda Arhiva educationala Marime 0.89 kb
#include <cstdio>
#include <iostream>
FILE *fin=fopen("ssm.in", "r"), *fout=fopen("ssm.out", "w");
long n, i, in, sf, start, Scurenta, Smax;
int v[6000000];
int sw, MAX;
using namespace std;

int main()
{
    sw=0; MAX=-36000;
    fscanf(fin, "%ld", &n);
    for(i=0;i<=n;i++)
    {
        fscanf(fin, "%d", &v[i]);
        if(v[i]>0)
            sw=1;
        if(!sw)
            if(v[i]>MAX)
                MAX=v[i], in=sf=i;
    }

    if(sw)
   {

        for(i=0;i<=n-1;i++)
        {
            Scurenta+=v[i];
            if(Scurenta>=Smax)
            {
                Smax=Scurenta;
                in=start;
                sf=i;
            }
            else if(Scurenta<0)
            {
                start=i+1;
                Scurenta=0;
            }
        }
        fprintf(fout, "%d %d %d", Smax, in+1, sf+1);
   }
   else fprintf(fout, "%d %d %d", MAX, in+1, sf+1);
    return 0;
}