Cod sursa(job #317204)

Utilizator nicolaetitus12Nicolae Titus nicolaetitus12 Data 22 mai 2009 20:56:41
Problema Secventa 2 Scor 100
Compilator c Status done
Runda Arhiva de probleme Marime 1.02 kb
#include <stdio.h>
#define N 8192
#define M 50001
char b[N];
int sum[M];
int bi,n,k;
int citeste()
{int nr=0,semn=1;
 while(!isdigit(b[bi])&&b[bi]!='-')
 {bi++;
  if(b[bi]==NULL)
  {if(fgets(b,N,stdin)==NULL)
   {return semn*nr;
   }
   bi=0;
  }
 }
 if(b[bi]=='-')
 {semn=-1;
  if(b[++bi]==NULL)
  {if(fgets(b,N,stdin)==NULL)
   {return semn*nr;
   }
   bi=0;
  }
 }
 while(isdigit(b[bi]))
 {nr=nr*10+b[bi]-'0';
  if(b[++bi]==NULL)
  {if(fgets(b,N,stdin)==NULL)
   {return semn*nr;
   }
   bi=0;
  }
 }
 return semn*nr;
}

int main ()
{freopen("secv2.in","r",stdin);
 freopen("secv2.out","w",stdout);
 n=citeste();
 k=citeste();
 int i,max=-2000000000,maxs,maxe,s=0,ss=1;
 for (i=1;i<=n;i++)
 {sum[i]=sum[i-1]+citeste();
 }
 for (i=1;i<=n-k+1;i++)
 {if(s+sum[i+k-1]-sum[i-1]>max)
  {max=s+sum[i+k-1]-sum[i-1];
   maxs=ss;
   maxe=i+k-1;
  }
  if(s+sum[i]-sum[i-1]>0)
  {s+=sum[i]-sum[i-1];
  }
  else
  {s=0;
   ss=i+1;
  }
 }
 printf("%d %d %d",maxs,maxe,max);
 return 0;
}