Pagini recente » Cod sursa (job #886435) | Cod sursa (job #2150787) | Cod sursa (job #1987398) | Cod sursa (job #2074270) | Cod sursa (job #2284871)
#include <iostream>
#include<cstdio>
#include<limits.h>
using namespace std;
const int N=500001;
int deq[N];
int v[N];
int maxi=0;
int valmax=INT_MIN;
//parsare
FILE*fin,*fout;
const int BUF = 1 << 17;
char buf[BUF];
int pos = BUF;
inline char next()
{
if(pos == BUF)
fread(buf, 1, BUF, fin), pos = 0;
return buf[pos++];
}
inline int read()
{
int x = 0, semn = 1;
char ch = next();
while(!isdigit(ch) && ch != '-')
ch = next();
if(ch == '-')
ch = next(), semn = -1;
while(isdigit(ch))
x = x * 10 + ch - '0', ch = next();
return x * semn;
}
int main()
{
fin=fopen("secventa.in","r");
fout=fopen("secventa.out","w");
int i,vf=0,baza=1;
int n,k;
n=read();
k=read();
for(i=1;i<=n;i++){
v[i]=read();
}
for(i=1;i<=n;i++){
while(vf>=baza && v[deq[vf]]>=v[i]){
vf--;
}
deq[++vf]=i;
while(deq[baza]<=i-k)
baza++;
if(i>=k){
if(valmax<v[deq[baza]]){
maxi=i;
valmax=v[deq[baza]];
}
}
}
int inc=maxi-k+1;
while(inc>=1 && v[inc]>=valmax)
inc--;
inc++;
fprintf(fout,"%d %d %d",inc,maxi,valmax);
return 0;
}