Pagini recente » Cod sursa (job #853184) | Cod sursa (job #1274224) | Cod sursa (job #911563) | Cod sursa (job #324398) | Cod sursa (job #188190)
Cod sursa(job #188190)
#include <iostream>
#define FIN "secventa.in"
#define FOUT "secventa.out"
#define INF 2000000000
#define MAX_N 500010
using namespace std;
int v[MAX_N],n,k;
struct el {
int vl,deadline;
} deq[MAX_N];
void iofile(void){
freopen(FIN,"rt",stdin);
freopen(FOUT,"wt",stdout);
cin>>n>>k;
for (int i=1;i<=n;++i) scanf("%d",&v[i]);
fclose(stdin);
}
void solve(void){
int pin,maxim=-INF,time=1;
int st=1,dr=1;
deq[1].vl=v[1];
deq[1].deadline=1+k;
for (int i=2;i<=n;++i){
++time;
while (st<=dr && deq[st].deadline<=time){++st;}
while (dr>=st && deq[dr].vl>v[i]){--dr;}
++dr;
deq[dr].vl=v[i];
deq[dr].deadline=i+k;
if (i>=k && deq[st].vl>maxim){maxim=deq[st].vl;pin=deq[dr].deadline-k-k+1;}
}
int pend=pin+k-1;
while (pin>1 && v[pin-1]>=maxim){--pin;}
printf("%d %d %d\n",pin,pend,maxim);
fclose(stdout);
return;
}
int main(void){
iofile();
solve();
return 0;
}