Pagini recente » Cod sursa (job #148170) | Cod sursa (job #544670) | Cod sursa (job #193478) | Cod sursa (job #868174) | Cod sursa (job #2458825)
#include <iostream>
#include <fstream>
#define MaxN 500001
using namespace std;
int q[MaxN],Left=0,Right=-1,n,k;
int sir[MaxN];
void push(int i)
{
int st=Left,m;
q[++Right]=i;
while(st<Right)
{
m=(st+Right)/2;
if(sir[i]<=sir[q[m]])
Right=m;
else
st=m+1;
}
q[st]=i;
}
int main()
{
ifstream f("secventa.in");
ofstream g("secventa.out");
f>>n>>k;
for(int i=1;i<=n;i++)
f>>sir[i];
f.close();
for(int i=1;i<=k;i++)
push(i);
int st,dr,rez;
dr=k;
rez=sir[q[Left]];
for(int i=k+1;i<=n;i++)
{
if(q[Left]<=i-k)
Left++;
push(i);
if(sir[q[Left]]>rez)
{
dr=i;
rez=sir[q[Left]];
}
}
st=dr-k+1;
while(rez <= sir[--st]);
g<<st+1<<' '<<dr<<' '<<rez;
g.close();
return 0;
}