Pagini recente » Cod sursa (job #101800) | Cod sursa (job #715322) | Cod sursa (job #2566374) | Cod sursa (job #2949854) | Cod sursa (job #749272)
Cod sursa(job #749272)
#include <stdio.h>
#include <vector>
#include <string>
#include <map>
#include <set>
#include <stdio.h>
#include <iostream>
#include <algorithm>
using namespace std;
#ifdef _WIN32
#define TYPEOF decltype
#else
#define TYPEOF typeof
#endif
#define FOR(i,s,e) for(int i = s;i < e; i++)
#define TR(i, c) for(TYPEOF(c.begin()) i = c.begin(); i != c.end(); ++i)
#define TRS(i, c, ...) TR(__itr, c) { TYPEOF(*c.begin()) &i = *__itr; __VA_ARGS__ }
#define TRP(f, s, c, ...) TR(__itr, c) { TYPEOF(c.begin()->first) &f = __itr->first; TYPEOF(c.begin()->second) &s = __itr->second; __VA_ARGS__ }
int a[500001];
int main()
{
#if 1
freopen("secventa.in", "r", stdin);
freopen("secventa.out", "w", stdout);
#endif
int n,k;
scanf("%d %d", &n, &k);
int s = 0, e = -1, m = 0, am = 40000, best = -40000, best_i;
FOR(i,0,n) {
int c;
scanf("%d", &c);
if(c < am) {
e = s;
a[s] = c;
am = c;
m = i;
} else {
while(e >= s) {
if(a[e] > c)
e--;
else
break;
}
a[++e] = c;
if(m == i - k) {
m++, s++;
am = a[s];
}
}
if(i >= k-1 && am > best) {
best = am;
best_i = i;
}
}
printf("%d %d %d\n", best_i+1 -k+1, best_i+1, best);
return 0;
}