Cod sursa(job #131841)

Utilizator mihai0110Bivol Mihai mihai0110 Data 4 februarie 2008 15:56:41
Problema Secventa Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.72 kb
#include<stdio.h>
#include<string.h>
long n,i,j,k,max,st,sf,p1,p2,x,semn;
long q[500001],poz[500001];
char s[10000000];
int main(void)
{
freopen("secventa.in","r",stdin);
freopen("secventa.out","w",stdout);
scanf("%ld%ld",&n,&k);
max=-32000;
gets(s);
gets(s);
i=0;
semn=1;
x=0;
for(j=0;j<=strlen(s);j++)
	{
	if(s[j]=='-')
	 semn=-1;
		else
			if(s[j]>='0'&&s[j]<='9')
				x=x*10+s[j]-'0';
		else
		{
			x*=semn;
			i++;
			while(st<=sf&&poz[st]<=i-k)
				st++;
			while(st<=sf&&q[sf]>=x)
				sf--;
			sf++;
			q[sf]=x;
			poz[sf]=i;
			if(i>=k&&q[st]>max)
				{
				max=q[st];
				p2=i;
				p1=p2-k+1;
				}
			semn=1;
			x=0;
		}
}
printf("%ld %ld %ld\n",p1,p2,max);
return 0;
}