Cod sursa(job #47857)

Utilizator wazupPricop Mircea wazup Data 4 aprilie 2007 09:50:47
Problema Secventa 2 Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.99 kb
#include <stdio.h>
int a[50001],dk[50001],n,k,i,j;
long max,sfmax,lmax,ts,stmax,sfmax2,bigmax;
int main()
{
FILE *fin,*fout;
fin=fopen("secv2.in","rt");
fout=fopen("secv2.out","wt");
fscanf(fin,"%d %d",&n,&k);
for (i=1;i<=n;i++)
  fscanf(fin,"%d ",&a[i]);
i=k;
for (j=i;j>=1;j--)
  dk[i]+=a[j];
for (i=k+1;i<=n;i++)
  dk[i]=dk[i-1]-a[i-k]+a[i];
max=-2147483647;
for (i=k;i<=n;i++)
   if (dk[i]>max)
       { max=dk[i];
	 sfmax=i;
	 }
dk[sfmax-k]=a[sfmax-k];
for (i=sfmax-k-1;i>=1;i--)
    dk[i]=a[i]+dk[i+1];
max=-2147483647;
for (i=1;i<=sfmax-k;i++)
   if (dk[i]>max)
     { max=dk[i];
       stmax=i;
     }
if (max<0)
  stmax=sfmax-k+1;
dk[sfmax+1]=a[sfmax+1];
for (i=sfmax+2;i<=n;i++)
    dk[i]=a[i]+dk[i-1];
max=-2147483647;
for (i=sfmax+1;i<=n;i++)
   if (dk[i]>max)
     { max=dk[i];
       sfmax2=i;
     }
if (max>0)
  sfmax=sfmax2;
bigmax=0;
for (i=stmax;i<=sfmax;i++)
  bigmax+=a[i];
fprintf(fout,"%ld %ld %ld\n",stmax,sfmax,bigmax);
return 0;
}