Pagini recente » Cod sursa (job #927702) | Cod sursa (job #296308) | Cod sursa (job #2642628) | Cod sursa (job #239199) | Cod sursa (job #169576)
Cod sursa(job #169576)
#include <cstdio>
const int nmax=500001;
int n,k,ls,ld,i,p,min,a[nmax],q[nmax],prim,ult;
int main(){
freopen("secventa.in","r",stdin);
freopen("secventa.out","w",stdout);
scanf("%d %d",&n,&k);
for (i=1;i<=n;i++) scanf("%d",&a[i]);
ls=1;ld=k;min=a[1];p=1;
for (i=2;i<=k;i++) if (a[i]<a[p]) p=i;
min=a[p];
prim=ult=1;q[1]=p;
for (i=k+1;i<=n;i++){
while (prim<=ult && i-q[prim]+1>k) prim++;
while (ult>=prim && a[q[ult]]>a[i]) ult--;
q[++ult]=i;
if (a[q[prim]]>min) {min=a[q[prim]];
ls=i-k+1;
ld=i;}
}
while (a[ls-1]>=min) ls--;
printf("%d %d %d",ls,ld,min);
return 0;
}