Cod sursa(job #1973645)

Utilizator ioana.jianuIoana Jianu ioana.jianu Data 25 aprilie 2017 17:10:47
Problema Subsecventa de suma maxima Scor 95
Compilator cpp Status done
Runda Arhiva educationala Marime 1.02 kb
#include <iostream>
#include <stdio.h>
using namespace std;
int v[6000001],s[6000001];

int main(){

    FILE *fin,*fout;
    fin=fopen("ssm.in","r");
    fout=fopen("ssm.out","w");

    int n,i,pp,pozz,maxneg,cs,cd,st,dr,maxim;

    fscanf(fin,"%d",&n);

    pp=1;
    maxneg=-2000000000;
    for(i=1;i<=n;i++){
        fscanf(fin,"%d",&v[i]);
        if(v[i]>0)
            pp=0;
        if(v[i]>maxneg){
            maxneg=v[i];
            pozz=i;
        }
    }

    maxim=-1;
    cs=cd=1;
    for(i=1;i<=n;i++){
        if(s[i-1]==0){
            cs=i;
            cd=i;
        }
        else
            cd++;
        s[i]=s[i-1]+v[i];
        if(s[i]<0)
            s[i]=0;
        if(s[i]>=maxim||(s[i]==maxim&&cd-cs<=dr-st)){
            maxim=s[i];
            st=cs;
            dr=cd;
        }
    }
    if(pp==1)
        fprintf(fout,"%d %d %d",maxneg,pozz,pozz);
    else
        fprintf(fout,"%d %d %d",maxim,st,dr);

    fclose(fin);
    fclose(fout);

    return 0;
}