Cod sursa(job #522892)

Utilizator elfusFlorin Chirica elfus Data 16 ianuarie 2011 15:43:35
Problema Secventa Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.55 kb
#include<stdio.h>
#define LMAX 500100

int n,k;
int x[LMAX],q[LMAX];

void read()
{
int i;
freopen("secventa.in","r",stdin);
freopen("secventa.out","w",stdout);
scanf("%d%d",&n,&k);
for(i=1;i<=n;i++)
	scanf("%d",&x[i]);
}

void solve()
{
int p=1,u=0,i,poz,max=poz=-1;
for(i=1;i<=n;i++)
	{
	while(p<=u && x[i]<=x[q[u]])
		u--;
	q[++u]=i;
	if(i>=k)
		{
		if(x[q[p]]>max)
			max=x[q[p]],poz=q[p];
		while(q[p]+k>=i+1 && p<=u)
			p++;
		}
	}
printf("%d %d %d",poz,poz+k-1,max);
}

int main()
{
read();
solve();
return 0;
}