Cod sursa(job #680450)

Utilizator AplayLazar Laurentiu Aplay Data 15 februarie 2012 17:14:30
Problema Subsecventa de suma maxima Scor 55
Compilator cpp Status done
Runda Arhiva educationala Marime 0.79 kb
#include<stdio.h>
#include<fstream>
using namespace std;
int a[6000010],s[600010],n,maxx=-2000000000,j,maxi,maxj;

void citire()
{
    ifstream f("ssm.in");
    f>>n;
    for(int i=0;i<n;++i)
        f>>a[i];
}

void ssm()
{
    s[0]=a[0];
    maxx=s[0];
    for(int i=1;i<n;++i)
    {
        if(s[i-1] + a[i] > a[i] )
        {
            s[i] = s[i-1] + a[i];
        }
        else { s[i] = a[i]; j = i; }
        if(s[i] > maxx || ( s[i] > maxx && (i-j < maxi - maxj ) ) )
        {
            maxx = s[i];
            maxi=j;
            maxj=i;
        }
    }
}

void scriere()
{
    FILE *f=fopen("ssm.out","w");
    fprintf(f,"%d %d %d",maxx,maxi+1,maxj+1);
    fclose(f);
}

int main()
{
    citire();
    ssm();
    scriere();
    return 0;
}