Cod sursa(job #1611279)

Utilizator VladTiberiuMihailescu Vlad Tiberiu VladTiberiu Data 23 februarie 2016 23:53:43
Problema Subsecventa de suma maxima Scor 90
Compilator cpp Status done
Runda Arhiva educationala Marime 0.73 kb
#include <cstdio>
#include <algorithm>
#include <cstring>

#define NMax 6000005
#define INF 0x3f3f3f3f
using namespace std;

int n,x,mx,finalincep,finalretin,incep;
int best[NMax];
int main()
{
    memset(best,-INF,sizeof(best));
    freopen("ssm.in","r",stdin);
    freopen("ssm.out","w",stdout);
    scanf("%d",&n);
    for(int i = 1; i <= n; ++i){
        scanf("%d",&x);
        if(best[i - 1] + x > x){
            best[i] = best[i - 1] + x;
        }else{
            incep = i;
            best[i] = x;
        }
        if(best[i] > mx){
            mx = best[i];
            finalincep = incep;
            finalretin = i;
        }
    }
    printf("%d %d %d",mx,finalincep,finalretin);
    return 0;
}