Cod sursa(job #723936)

Utilizator RengelBotocan Bogdan Rengel Data 26 martie 2012 03:21:53
Problema Secventa Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.91 kb
#include<cstdio>
#include<deque>

#define MAXN 500005

std :: deque <int> Deck;

int N,K;
int A[MAXN];
int max = -30000;
int front,back;

int main(){
	
	freopen("secventa.in","r",stdin);
	freopen("secventa.out","w",stdout);
	
	scanf("%d %d",&N,&K);
	
	for(int i=1;i<=N;i++)
		scanf("%d",&A[i]);
	
	for(int i=1;i<=N;i++){
		
		while(!Deck.empty() && A[i] < A[Deck.back()])
			Deck.pop_back();
		
		Deck.push_back(i);
		
		if(i-K == Deck.front())
			Deck.pop_front();
		
		if(Deck.front() > max){
			max = A[Deck.front()];
			front = Deck.front();
			back = Deck.back();
		}
		/*else if(Deck.front() == max && Deck.front() < front){
			front = Deck.front();
			back = Deck.back();
		}
		else if(Deck.front() == max && Deck.front() == front && Deck.back() < back){
			front = Deck.front();
			back = Deck.back();
		}*/
		
	}
	
	printf("%d %d %d",front,back,max);
	
	return 0;
	
}