Cod sursa(job #460028)

Utilizator mihaipopa12Popa Mihai mihaipopa12 Data 31 mai 2010 23:42:37
Problema Secventa Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.59 kb
#include<cstdio>
FILE*f=fopen("secventa.in","r");
FILE*g=fopen("secventa.out","w");
int sol = -999999,n,k,i,front,back,v[500005],deque[500005],a,b;
int main () {
	fscanf(f,"%d %d",&n,&k);
	for(i=1; i<=n ;++i)
		fscanf(f,"%d",&v[i]);
	front = 1; back = 1;
	deque[1] = 1;
	a = b = 1;
	for(i=2; i<=n; ++i){
		
		while(front<=back && v[i]<=v[deque[back]])
			back--;
		deque[++back] = i;
		if(i>=k&&v[deque[front]]>sol){
			a = i-k+1; b  = i;
			sol = v[deque[front]];
		}
		if(deque[front]<=i-k+1)
			front++;
	}
	fprintf(g,"%d %d %d",a,b,sol);
	fclose(f);
	fclose(g);
	return 0;
}