Pagini recente » Cod sursa (job #771948) | Cod sursa (job #779751) | Cod sursa (job #2375925) | Cod sursa (job #2272054) | Cod sursa (job #40390)
Cod sursa(job #40390)
#include <stdio.h>
#define NMAX 500000
#define MIN -30001
int n, k, x[NMAX], poz[NMAX], q[NMAX];
int max, msf;
void read()
{
int i;
scanf(" %d %d", &n, &k);
for (i = 0; i < n; i++)
scanf(" %d", x + i);
}
void rezolv()
{
int i, beg, end;
beg = 0; end = -1;
max = MIN;
for (i = 0; i < n; i++)
{
if (beg <= end && poz[beg] + k <= i)
beg++;
for (; end >= beg && x[i] <= q[end]; --end);
q[++end] = x[i], poz[end] = i;
if (i > k && q[beg] > max)
max = q[beg], msf = i;
}
}
void afisare()
{
int p;
for (p = msf - k; p && x[p] >= max; --p);
printf("%d %d %d\n", p + 2, msf + 1, max);
}
int main()
{
freopen("secventa.in", "r", stdin);
freopen("secventa.out", "w", stdout);
read();
rezolv();
afisare();
return 0;
}