Cod sursa(job #269399)

Utilizator n3msizN3msiz n3msiz Data 2 martie 2009 20:48:16
Problema Subsecventa de suma maxima Scor 90
Compilator cpp Status done
Runda Arhiva educationala Marime 0.74 kb
#include<stdio.h>
int v[6000002],n,i,s[6000002],pmax,imax,pi,pimax,max;

int main(){
 FILE *f=fopen("ssm.in","r");
 FILE *g=fopen("ssm.out","w");
 fscanf(f,"%d",&n);
 for(i=1;i<=n;i++)
    fscanf(f,"%d",&v[i]);
 s[1]=v[1];
 max = s[1];
 imax = 1;
 pi = 1;
/* for(i=2;i<=n;i++)
    s[i]=s[i-1]+v[i];
 for(i=1;i<=n;i++)
   for(j=1;j<=n;j++){
      if(s[j]-s[i-1]>max)
	 max=s[j]-s[i-1];
	 imax=i;
	 jmax=j;
   }
     */
 for(i=2;i<=n;++i) {

    if(s[i-1]+v[i]>v[i]){
       s[i]=s[i-1]+v[i];
    }
    else {
       s[i]=v[i];
       pi = i;
    }

    if (s[i]>max) {
      max = s[i];
      imax = i;
      pimax = pi;
    }
 }


 
 fprintf(g,"%d %d %d",max,pimax,imax);
 fclose(g);
 fclose(f);
 return 0;
}