Pagini recente » Cod sursa (job #1422128) | Cod sursa (job #2536073) | Cod sursa (job #214263) | Cod sursa (job #1853547) | Cod sursa (job #1653975)
#include <iostream>
#include <cstdio>
#define MAXN 500050
using namespace std;
int a[MAXN], maxi = -999999999, poz, n, k;
int deck[MAXN], st, dr;
void add(int ind)
{
while (st <= dr && a[ind] <= a[deck[dr]])
dr--;
deck[++dr] = ind;
}
int get(int ind)
{
while (deck[st]-ind >= k) st++;
return a[deck[st]];
}
int main()
{
freopen("secventa.in", "r", stdin);
freopen("secventa.out", "w", stdout);
scanf("%d %d", &n, &k);
st = 1; dr = 0;
for (int i = 1; i <= n; i++)
scanf("%d", &a[i]);
for (int i = n; i > n-k+1; i--)
add(i);
for (int i = n-k+1; i >= 1; i--) {
add(i);
int val = get(i);
if (val >= maxi) {
maxi = val;
poz = i;
}
}
printf("%d %d %d", poz, poz+k-1, maxi);
return 0;
}