Pagini recente » Cod sursa (job #2932662) | Cod sursa (job #2536682) | Cod sursa (job #625231) | Cod sursa (job #1931215) | Cod sursa (job #211210)
Cod sursa(job #211210)
// http://infoarena.ro/problema/secventa
#include <cstdio>
#include <deque>
using namespace std;
deque<int> Min;
int n, k, A[500001];
int ans, ansPos;
#define DONE
int main() {
freopen("secventa.in", "r", stdin);
#ifdef DONE
freopen("secventa.out", "w", stdout);
#endif
scanf("%d %d", &n, &k);
int i;
for (i = 0; i < n; ++ i)
scanf("%d", &A[i]);
ans = 0, ansPos = -1;
deque<int>::iterator di;
for (i = 0; i < n; ++ i) {
if (i >= Min.front() + k)
Min.pop_front();
if (Min.empty() || A[i] > A[Min.back()]) {
Min.push_back(i);
} else {
while (Min.empty() == false && A[i] < A[Min.back()])
Min.pop_back();
Min.push_back(i);
}
/*for (di = Min.begin(); di != Min.end(); ++ di)
printf("%d ", A[*di]);
printf("\n");*/
if (i >= k - 1 && ans < A[Min.front()]) {
ans = A[Min.front()];
ansPos = i;
}
}
printf("%d %d %d\n", ansPos - k + 2, ansPos + 1, ans);
return 0;
}