Pagini recente » Cod sursa (job #2616959) | Cod sursa (job #1974648) | Cod sursa (job #679014) | Cod sursa (job #2660383) | Cod sursa (job #197570)
Cod sursa(job #197570)
#include<stdio.h>
#include<limits.h>
#include<stdlib.h>
#define NMAX 50001
int main(){
freopen("secv2.in","r",stdin);
freopen("secv2.out","w",stdout);
long n,k,i,j,lmax,v[NMAX+1],x,
pi,ps,sl,smax,end,slmin,pslmin,slmax,pslmax;
const int lsir=7*NMAX;
char sir[lsir],*p;
scanf("%ld%ld\n",&n,&k);
v[0]=0L;
fgets(sir,NMAX*7,stdin);
p=sir;
for(i=1;i<=n;++i){
x=atoi(p);
v[i]=v[i-1]+x;
while(*p!=32&&*p) p++;p++;
}
lmax=0;smax=LONG_MIN;
slmin=v[0];pslmin=0;
for(i=1;i<=n-k;++i)
if(slmin>v[i]) {slmin=v[i];pslmin=i;}
slmax=v[n];pslmax=n;
for(i=n-1;i>=k;--i)
if(slmax<v[i]) {slmax=v[i];pslmax=i;}
if(pslmax-pslmin>=k) {
smax=slmax-slmin;
pi=pslmin+1;
ps=pslmax;
}
else
for(i=k;i<=n;++i){
end=i-k;
for(j=0;j<=end;++j){
sl=v[i]-v[j];
if(sl>smax){smax=sl;pi=j+1;ps=i;}
}
}
printf("%ld %ld %ld",pi,ps,smax);
return 0;
}