Pagini recente » Cod sursa (job #1434314) | Cod sursa (job #1647542) | Cod sursa (job #1592988) | Cod sursa (job #654595) | Cod sursa (job #2143067)
#include <stdio.h>
#include <limits.h>
#define SIZE 500000
struct sol {
int b, m;
};
struct elem {
int i, x;
};
static struct elem v[SIZE<<1];
int main(void)
{
int i, n, k, x, cmin, h, t;
struct sol s;
freopen("secventa.in", "r", stdin);
freopen("secventa.out", "w", stdout);
scanf("%d %d", &n, &k);
s.b = -1;
s.m = INT_MIN;
cmin = INT_MAX;
h = t = SIZE;
for (i = 1; i <= n; i++) {
scanf("%d", &x);
if (v[h].i <= i - k) {
h++;
}
if (x < v[h].x) {
h--;
v[h].x = x;
v[h].i = i;
} else {
v[t].x = x;
v[t].i = i;
t++;
}
if (i >= k && v[h].x > s.m) {
s.m = v[h].x;
s.b = v[h].i < v[h + 1].i ? v[h].i : v[h + 1].i;
}
}
printf("%d %d %d\n", s.b, s.b + k - 1, s.m);
return 0;
}