Cod sursa(job #1075599)

Utilizator a96tudorAvram Tudor a96tudor Data 9 ianuarie 2014 11:31:47
Problema Subsecventa de suma maxima Scor 95
Compilator cpp Status done
Runda Arhiva educationala Marime 1.01 kb
//subsecventa de suma maxima
#include<cstdio>
#define N_MAX 6000000
#define INF 2000000000
using namespace std;
int sum[N_MAX],best[N_MAX];
int N;
inline void Solve_Problem(int N)
{
    int Min,Sol,poz,st,dr;
    Sol=-INF;
    st=0;
    dr=0;
    sum[0]=0;
    Min=sum[0];
    poz=1;
    for (int i=1;i<=N;++i)
    {
        best[i]=sum[i]-Min;
        if (Min>sum[i])
                {
                    Min=sum[i];
                    poz=i+1;
                }
        if (Sol<best[i])
                {
                    Sol=best[i];
                    st=poz;
                    dr=i;
                }
    }
    printf("%d %d %d\n",Sol,st,dr);
}
inline void Load_Data()
{
    int x;
    scanf("%d",&N);
    for (int i=1;i<=N;++i)
    {
        scanf("%d",&x);
        sum[i]=sum[i-1]+x;
    }
}
int main()
{
    freopen("ssm.in","r",stdin);
    freopen("ssm.out","w",stdout);
    Load_Data();
    Solve_Problem(N);
    fclose(stdin);
    fclose(stdout);
    return 0;
}