Pagini recente » Cod sursa (job #1415422) | Cod sursa (job #636889) | Cod sursa (job #1374525) | Cod sursa (job #1764465) | Cod sursa (job #79372)
Cod sursa(job #79372)
#include<stdio.h>
#include<limits.h>
#include<string.h>
#define Dim 500000
long n, k, i, st, dr, rez, poz, a[500001], q[500001], nr;
#define cit(x) \
{ char buf[500020]; \
x = 0; \
while(buf[poz] < '0' || buf[poz] > '9') \
if(++poz == Dim) \
fread(buf,1,Dim,stdin), poz = 0; \
while(buf[poz] >= '0' && buf[poz] <= '9') \
{ \
x = x*10 + buf[poz] - '0'; \
if(++poz == Dim) \
fread(buf,1,Dim,stdin), poz = 0; \
} \
}
void read()
{
freopen("secventa.in","r",stdin);
freopen("secventa.out","w",stdout);
int i;
cit(n);
cit(k);
for(i = 1; i <= n; ++i)
cit(a[i]);
}
int main()
{
read();
rez=LONG_MIN;
st=1, dr=0;
for (i=1; i<=k-1; i++)
{
while(dr>=st && a[i]<=a[q[dr]]) dr--;
dr++;
q[dr]=i;
}
for (i=k; i<=nr; i++)
{
while (st<=dr && a[i]<=a[q[dr]]) dr--;
dr++;
q[dr]=i;
while (st<=dr && q[st]<i-k+1) st++;
if (a[q[st]]>rez)
{
rez=a[q[st]];
poz=i;
}
}
printf("%ld %ld %ld",poz-k+1, poz, rez);
return 0;
}