Pagini recente » Cod sursa (job #380105) | Cod sursa (job #2606710) | Borderou de evaluare (job #1418085) | Borderou de evaluare (job #181837) | Cod sursa (job #1800598)
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <cmath>
#include <algorithm>
#include <queue>
#include <deque>
using namespace std;
#ifdef INFOARENA
#define ProblemName "secventa"
#endif
#define MCONCAT(A, B) A B
#ifdef ProblemName
#define InFile MCONCAT(ProblemName, ".in")
#define OuFile MCONCAT(ProblemName, ".out")
#else
#define InFile "fis.in"
#define OuFile "fis.out"
#endif
#define MAXN 500010
int v[MAXN], N, K;
deque<int> D;
void solve() {
D.push_back(0);
int mmin = -1, flag = 0;
int L, R;
for (int i = 1; i < N; ++i) {
while (!D.empty() && v[i] <= v[*D.rbegin()])
D.pop_back();
D.push_back(i);
if (i < K)
continue;
if (i - *D.begin() + 1 > K)
D.pop_front();
if (!flag || v[*D.begin()] > mmin) {
flag = 1;
mmin = v[*D.begin()];
L = *D.begin();
R = i;
}
}
printf("%d %d %d\n", L + 1, R + 1, mmin);
}
int main() {
freopen(InFile, "r", stdin);
freopen(OuFile, "w", stdout);
scanf("%d%d", &N, &K);
for (int i = 0; i < N; ++i)
scanf("%d", &v[i]);
solve();
return 0;
}