Cod sursa(job #184148)

Utilizator ProcopliucProcopliuc Adrian Procopliuc Data 23 aprilie 2008 10:25:15
Problema Secventa 2 Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.82 kb
# include <stdio.h>
long int a[50005],b[50005],s[50005],p1,p2,n,k,s1,i,j,l,max,smax;
int main ()
{
freopen ("secv2.in","r",stdin);
freopen ("secv2.out","w",stdout);
scanf ("%li%li",&n,&k);
for (i=1;i<=n;i++)
scanf ("%li",&a[i]);
s[1]=a[1];
j=1;
b[1]=1;
for (i=2;i<=n;i++)
{
if (s[i-1]<0)
{
s[i]=a[i];
j=1;
}
else
{
s[i]=s[i-1]+a[i];
j++;
}
b[i]=j;
}
max=-2000000000;
for (i=1;i<=n;i++)
if (s[i]>max)
max=s[i];
if (max>=0)
{
max=-2000000000;
for (i=1;i<=n;i++)
if (b[i]>=k)
if (s[i]>max)
{
max=s[i];
p2=i;
}
s1=s[p2];
i=p2;
while (s1>0)
{
s1=s1-a[i];
i--;
}
p1=i+1;
}
else
{
smax=-2000000000;
for (i=1;i<=n;i++)
{
s1=0;
for (j=i;j<=n;j++)
{
s1=s1+a[j];
if (j-i+1>=k)
if (smax<s1)
{
smax=s1;
p1=i;
p2=j;
}
}
}
max=smax;
}
printf ("%li %li %li",p1,p2,max);
return 0;
}