Cod sursa(job #1706249)

Utilizator andreicoman299Coman Andrei andreicoman299 Data 21 mai 2016 23:09:47
Problema Subsecventa de suma maxima Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.83 kb
#include <stdio.h>
#include <stdlib.h>
#define MAXN 6000000

inline int maxim(int a, int b){
    return a > b ? a : b;
}

int d[1+MAXN];
int main(){
    int n;
    FILE*fi,*fo;
    fi=fopen("ssm.in","r");
    fo=fopen("ssm.out","w");
    fscanf(fi,"%d", &n);
    int max=-1000000000, x, bgn=1, st, end;
    for(int i=1;i<=n;i++){
        fscanf(fi,"%d", &x);
        d[i]=maxim(0, d[i-1])+x;
        if(d[i-1]<0)
            bgn=i;
        if(d[i]>max){
            max=d[i];
            st=bgn;
            end=i;
        }
        else if(d[i]==max){
            if(bgn<st){
                st=bgn;
                end=i;
            }
        }
    }
    if(max==-1000000000)
        fprintf(fo,"-1");
    else
        fprintf(fo,"%d %d %d", max, st, end);
    fclose(fi);
    fclose(fo);
    return 0;
}