Cod sursa(job #357506)

Utilizator eudanipEugenie Daniel Posdarascu eudanip Data 19 octombrie 2009 16:52:28
Problema Secventa Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.81 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=-31000,semn,nr;
char s[500001];
int main ()
{
freopen("secventa.in","r",stdin);
freopen("secventa.out","w",stdout);
scanf("%ld%ld\n",&n,&k);
gets(s+1);
semn=1;
for(i=1;s[i];i++)
{
if(s[i]==' ')
 {
	 a[++u]=nr*semn;
   semn=1;
     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;
}