Pagini recente » Cod sursa (job #1036528) | Cod sursa (job #3190220) | summer_camp_7 | Cod sursa (job #877611) | Cod sursa (job #226165)
Cod sursa(job #226165)
#include <stdio.h>
#define maxn 5000005
struct nimic
{
int v, p;
};
int n, k, f, l, x [maxn];
char c [10*maxn];
nimic q [maxn];
void scan ()
{
int i, s=1;
scanf ("%d%d\n", &n, &k);
gets (c);
x [0]=1;
for (i=0; c [i] != '\0' && c [i] != '\n'; ++i)
if (c [i] == '-')
s=-1;
else
if (c [i] >= '0' && c [i] <= '9')
x [x [0]]=x [x [0]]*10+c [i]-'0';
else
{
x [x [0]]*=s;
s=1;
++x [0];
}
x [x [0]]*=s;
}
void rez ()
{
int i, w, max, p;
scanf ("%d%d", &n, &k);
for (i=1; i<=k; ++i)
{
while (l > 0 && q [l].v > x [i]) --l;
q [++l].p=i;
q [l].v=x [i];
}
p=l;
f=1;
max=q [f].v;
for (i=k+1; i<=n; ++i)
{
w=i-k;
while (f <= l && q [f].p <= w) ++f;
while (f <= l && q [l].v > x [i]) --l;
q [++l].p=i;
q [l].v=x [i];
if (q [f].v > max)
{
max=q [f].v;
p=i;
}
}
printf ("%d %d %d", p-k+1, p, max);
}
int main ()
{
freopen ("secventa.in", "r", stdin);
freopen ("secventa.out", "w", stdout);
scan ();
rez ();
return 0;
}