Cod sursa(job #48002)

Utilizator TheCreeepIonita Andrei Lucian TheCreeep Data 4 aprilie 2007 12:22:04
Problema Secventa Scor 0
Compilator c Status done
Runda Arhiva de probleme Marime 0.61 kb
#include <stdio.h>
int x[1<<19],n,m,i,j, max, maxi;
int q[1<<19],a,b;
void pop()
{
	a++;
}
void push(int X)
{
	while (b>a && q[b]>X) b--;
	q[++b]=X;
}
int top()
{
	return q[a];
}
void init()
{
	a=0;
	b=0;
}
int main (void)
{
	max=-999999;
	q[0]=-999999;
	FILE *f=fopen("secventa.in","r");
	fscanf(f,"%d %d",&n,&m);
	a=1;
	for(i=1;i<=n;++i)
	{
		fscanf(f,"%d",&x[i]);		
		{
			while (q[b]>x[i]) b--;
			q[++b]=x[i];
		}
		if (i-m>0 && x[i-m]==q[a]) q[a++]=-999999;
		if (q[a]>max)
		{
			max=q[a];
			maxi=i;
		}
	}
	fclose(f);
	f=fopen("secventa.out","w");
	fprintf(f,"%d %d %d\n",maxi-m+1,maxi,max);
	fclose(f);	
	return 0;
}