Cod sursa(job #1515713)

Utilizator victormarinMarin Victor victormarin Data 2 noiembrie 2015 08:47:52
Problema Subsecventa de suma maxima Scor 95
Compilator cpp Status done
Runda Arhiva educationala Marime 0.91 kb
#include <cstdio>
#define filein "ssm.in"
#define fileout "ssm.out"
#define MAX(a,b) (a>b)?a:b
using namespace std;

int v[6000001];
int s[6000001];
int st,fn,maxx;
int N;

void ReadData();
void PrintData();

int main()
{
    ReadData();
    register int i;
    s[1]=v[1];
    fn=1;
    maxx=s[1];
    for (i=2; i<=N; i++)
    {
        s[i]=MAX(s[i-1]+v[i],v[i]);
        if (maxx<s[i])
        {
            maxx=s[i];
            fn=i;
        }
    }
    st=fn+1;
    int x=maxx;
    while(x!=0)
    {
        x-=v[st-1];
        st--;
    }
    PrintData();
    return 0;
}

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

void PrintData()
{
    FILE *out;
    out=fopen(fileout,"w");
    fprintf(out,"%d %d %d",maxx,st,fn);
    fclose(out);
}