Pagini recente » Cod sursa (job #747911) | Cod sursa (job #1113999) | Cod sursa (job #1861002) | Cod sursa (job #3033510) | Cod sursa (job #48553)
Cod sursa(job #48553)
#include <stdio.h>
#define NM 50//001
int a[NM],dk[NM],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;
}