Pagini recente » Cod sursa (job #2779683) | Cod sursa (job #1038266) | Cod sursa (job #637495) | Cod sursa (job #2278507) | Cod sursa (job #1218419)
#include <iostream>
#include <cstdio>
#define nmax 500009
using namespace std;
int n,k;
typedef int Deque;
Deque D[nmax];
int a[nmax],maxim;
int main(){
int i,front,back,x,sum=0,j,pi,pf=0,aux,q;
freopen("secventa.in","r",stdin);
freopen("secventa.out","w",stdout);
scanf("%d%d",&n,&k);
front = 1; back = 0;
for(i=1;i<=n;i++) scanf("%d",&a[i]);
maxim = -99999; pi = 1;
for(i=1;i<=n;i++){
while(front <= back && a[i] < a[D[back]]) back--;
D[++back] = i;
if(a[D[front]] < a[i] && D[front] <= i-k) {front++;}
if(i >= k && a[D[front]] > maxim) {pi = D[front]; maxim = a[D[front]];}
// if(i==6) {for(j=front;j<=back;j++) cout << a[D[j]]<<' ';}
}
q = pi; aux = pi;
while(a[q] >= maxim && q > 0) q--;
q++;
if(pi - q >= k) pf = pi;
else pf = pi + k-(pi-q)-1;
cout <<q<<' '<<pf<<' '<<maxim<<'\n';
return 0;
}