Pagini recente » Cod sursa (job #2276733) | Cod sursa (job #2822502) | Cod sursa (job #440249) | Cod sursa (job #761671) | Cod sursa (job #373941)
Cod sursa(job #373941)
#include<cstdio>
#include<cstring>
#include<stdlib.h>
int poz,semn,pozim,pozsm,max,s,d,n,k,dq[500001],v[500001];
char a[4000001];
inline void st(int i)
{
if(i-dq[s]==k)
++s;
}
void dr(int i)
{
while(s<=d && v[dq[d]]>=v[i])
--d;
dq[++d]=i;
}
int main()
{
freopen("secventa.in","r",stdin);
freopen("secventa.out","w",stdout);
scanf("%d%d\n",&n,&k);
gets(a);
semn=1;
poz=1;
for(int i=0;a[i] && a[i]!='\n';i++)
if(a[i]==' ')
{
v[poz]=v[poz]*semn;
poz++;
semn=1;
}
else
{
if(a[i]=='-')
semn=-1;
else
v[poz]=v[poz]*10+a[i]-'0';
}
dq[1]=1;
s=d=1;
for(int i=2;i<=k;i++)
dr(i);
pozim=1;
pozsm=k;
max=v[dq[s]];
for(int i=k+1;i<=n;i++)
{
st(i);
dr(i);
if(v[dq[s]]>max)
{
pozim=i-k+1;
pozsm=i;
max=v[dq[s]];
}
}
printf("%d %d %d",pozim,pozsm,max);
return 0;
}