Cod sursa(job #1284002)

Utilizator PopoviciRobertPopovici Robert PopoviciRobert Data 6 decembrie 2014 10:11:46
Problema Subsecventa de suma maxima Scor 100
Compilator c Status done
Runda Arhiva educationala Marime 0.94 kb
#include <stdio.h>
#include <stdlib.h>
int s[6000001];
int main()
{   FILE*fi,*fout;
    int nr,ultim,i,max,n,con;
    fi=fopen("ssm.in" ,"r");
    fout=fopen("ssm.out" ,"w");
    fscanf(fi,"%d" ,&n);
    ultim=0;
    max=con=0;
    for(i=1;i<=n;i++){
       fscanf(fi,"%d" ,&nr);
       if(nr<0)
         con++;
       if(s[i-1]+nr>max){
           ultim=i;
           max=s[i-1]+nr;
       }
       else
          if(s[i-1]>max&&i>1){
             ultim=i;
             max=s[i];
          }
       if(s[i-1]+nr>nr)
         s[i]=s[i-1]+nr;
       else
         s[i]=nr;
    }
    if(con==n){
        max=s[1];
        for(i=1;i<=n;i++)
          if(max<s[i]){
               max=s[i];
               nr=ultim=i;
          }
        nr--;
    }
    else{
      nr=ultim;
      while(nr>0&&s[nr]>=0)
        nr--;
    }
    fprintf(fout,"%d %d %d" ,max,nr+1,ultim);
    fclose(fi);
    fclose(fout);
    return 0;
}