Pagini recente » Cod sursa (job #237139) | Cod sursa (job #2257230) | Cod sursa (job #926683) | Cod sursa (job #1701954) | Cod sursa (job #334722)
Cod sursa(job #334722)
#include<stdio.h>
int main()
{
int n,k,x[50000],s[50000],m[50000],l[50000],i,m1[50000],l1[50000],max=-1250000000,pozmax,lmax;
FILE *f=fopen("secv2.in","r");
fscanf(f,"%i%i",&n,&k);
for(i=0;i<n;i++)
fscanf(f,"%i",x+i);
fclose(f);
for(i=0;i<n;i++)
{
m[i]=x[i];
l[i]=1;
}
s[0]=x[0];
for(i=1;i<n;i++)
{
if(m[i-1]+x[i]>m[i])
{
m[i]=m[i-1]+x[i];
l[i]=1+l[i-1];
}
s[i]=s[i-1]+x[i];
}
for(i=0;i<n;i++)
{
if(l[i]>=k)
{
m1[i]=m[i];
l1[i]=l[i];
}
else
{
if(i>=k)
{
if(m[i-k]>0)
{
m1[i]=m[i]+s[i-l[i]]-s[i-k]+m[i-k];
l1[i]=k+l[i-k];
}
else
{
m1[i]=m[i]+s[i-l[i]]-s[i-k];
l1[i]=k;
}
}
else if(i==k-1)
{
m1[i]=s[i];
l1[i]=k;
}
}
}
for(i=k-1;i<n;i++)
{
if(m1[i]>max)
{
max=m1[i];
pozmax=i;
lmax=l1[i];
}
}
f=fopen("secv2.out","w");
fprintf(f,"%i %i %i\n",pozmax+2-lmax,pozmax+1,max);
fclose(f);
return 0;
}