Pagini recente » Cod sursa (job #3132379) | Cod sursa (job #1290495) | Borderou de evaluare (job #748045) | Cod sursa (job #943158) | Cod sursa (job #723936)
Cod sursa(job #723936)
#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;
}