Cod sursa(job #1118557)

Utilizator victormarinMarin Victor victormarin Data 24 februarie 2014 11:55:46
Problema Subsecventa de suma maxima Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.95 kb
#include <cstdio>
#define filein "ssm.in"
#define fileout "ssm.out"
using namespace std;

int v[6000001];
int s[6000001];
int n,nmax,l1max,l2max;

void citire();
void generare();
void afisare();

int main()
{
    citire();
    generare();
    afisare();
    return 0;
}

void citire()
{
    FILE *in;
    in=fopen(filein,"r");
    fscanf(in,"%d",&n);
    int i;
    for (i=1; i<=n; i++)
        fscanf(in,"%d",v+i);
    fclose(in);
}

void generare()
{
    int i,l=1;
    nmax=-2100000000;
    for (i=1; i<=n; i++)
    {
         if (v[i]>s[i-1]+v[i])
         {
             s[i]=v[i];
             l=i;
         }
         else
            s[i]=s[i-1]+v[i];
         if (s[i]>nmax)
         {
             nmax=s[i];
             l1max=l;
             l2max=i;
         }
    }
}

void afisare()
{
    FILE *out;
    out=fopen(fileout,"w");
    fprintf(out,"%d %d %d",nmax,l1max,l2max);
    fclose(out);
}