Cod sursa(job #357731)

Utilizator eudanipEugenie Daniel Posdarascu eudanip Data 20 octombrie 2009 16:42:16
Problema Secventa Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.82 kb
#include<stdio.h>
#include<stdlib.h>
long j,i,x[500001],t,in,sf,sec,k,n,poz,u;
int a[500001],v[500001],max=-2000000000,semn,nr;
char s[3500001];
int main ()
{
freopen("secventa.in","r",stdin);
freopen("secventa.out","w",stdout);
scanf("%ld%ld\n",&n,&k);
gets(s);
semn=1;
for(i=0;s[i];i++)
{
if(s[i]==' ')
 {
	 a[++u]=nr*semn;
   semn=1;
   nr=0;
	 continue;

 }
 if(s[i]=='-')
 {
	 semn=-1;
	 continue;
 }
if(s[i]>='0' && s[i]<='9')
  nr=nr*10+(s[i]-'0');


}

in=1;
sf=0;
sec=0;
for(i=1;i<=n;i++)
{

if(i-k+1>x[in])
   in++;
	t=sf;

   if(i>1)
   {
   while(v[t]>a[i])
   {
	 t--;

	if(t<in)
		 break;
   }
   }
   t++;
   sf=t;
	v[sf]=a[i];
	x[sf]=i;

 if(v[in]>max)
   {
	if(i>=k)
	{ max=v[in];
	  poz=i;
	}
   }

}
printf("%ld %ld %d",poz-k+1,poz,max);
return 0;
}