Pagini recente » Cod sursa (job #2110764) | Cod sursa (job #2808507) | Cod sursa (job #1343356) | Cod sursa (job #1953925) | Cod sursa (job #2033876)
#include <cstdio>
#include <deque>
#define N 500005
using namespace std;
int n, k, a[N], nr, curs;
int maxi=-930000, psm;
char buff[N];
deque <int> d;
void adv()
{
curs++;
if(curs>=N)
{
fread(buff, 1, N, stdin);
curs=0;
}
}
int getInt()
{
int nr=0, semn=1;
while(!(buff[curs]>='0' && buff[curs]<='9'))
{
if(buff[curs]=='-')
semn=-1;
adv();
}
while(buff[curs]>='0' && buff[curs]<='9')
{
nr=nr*10+buff[curs]-'0';
adv();
}
return nr*semn;
}
int main()
{
freopen("secventa.in","r",stdin);
freopen("secventa.out","w",stdout);
scanf("%d %d\n",&n, &k);
fread(buff, 1, N, stdin);
for(int i=0;i<n;i++)
a[i]=getInt();
d.push_back(0);
for(int i=1;i<n;i++)
{
while(!d.empty() && a[d.back()]>=a[i])
d.pop_back();
d.push_back(i);
if(i>=k)
{
if(d.front()==i-k)
d.pop_front();
if(a[d.front()]>maxi)
{
maxi=a[d.front()];
psm=i+1;
}
}
}
printf("%d %d %d", psm-k+1, psm, maxi);
return 0;
}