Cod sursa(job #197570)

Utilizator nusmaibunkeleviprofesor cicalescu nusmaibunkelevi Data 5 iulie 2008 09:38:41
Problema Secventa 2 Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.85 kb
#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;
}