Pagini recente » Cod sursa (job #1537773) | Cod sursa (job #2345863) | Cod sursa (job #793132) | Cod sursa (job #821227) | Cod sursa (job #180287)
Cod sursa(job #180287)
#include <stdio.h>
#define maxl 500010
int i,j,k,n,l,r,max=-30010,p,q;
int dec[maxl],val[maxl];
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 ",&val[i]);
val[0]=-30010;
for (i=1; i<=k; i++)
{
r++;
dec[r]=i;
while (val[dec[r-1]]>val[dec[r]])
{
dec[r-1]=dec[r];
r--;
}
}
max=val[dec[1]];p=1;q=k;
l=1;
for (i=k+1; i<=n; i++)
{
if (dec[l]<=i-k)
{
dec[l]=-30100;
l++;
}
r++;
dec[r]=i;
while (r-1>=l && val[dec[r-1]]>val[dec[r]])
{
dec[r-1]=dec[r];
r--;
}
if (val[dec[l]]>max)
{
max=val[dec[l]];p=i-k+1;q=i;
}
}
printf("%d %d %d\n",p,q,max);
return 0;
}