Pagini recente » Cod sursa (job #1408752) | Cod sursa (job #1823237) | Cod sursa (job #2797141) | Cod sursa (job #2244233) | Cod sursa (job #2167538)
#include <cstdio>
#include<deque>
using namespace std;
void read();
void write();
deque<pair<int, int> > deq;
int n, k;
int p, v;
void Get(int &x);
int main()
{
freopen("secventa.in", "r", stdin);
freopen("secventa.out", "w", stdout);
read();
write();
return 0;
}
void read()
{
Get(n); Get(k);
int i, aux;
for (i = 1; i <= k; ++i)
{
Get(aux);
while (!deq.empty() && deq.front().first > aux)
deq.pop_front();
deq.push_front(make_pair(aux, i));
}
v = deq.back().first;
p = k;
for (i = k + 1; i <= n; ++i) {
if (i - deq.back().second >= k)
deq.pop_back();
Get(aux);
while (!deq.empty() && deq.front().first > aux)
deq.pop_front();
deq.push_front(make_pair(aux, i));
if (deq.back().first > v) {
v = deq.back().first;
p = i;
}
}
}
void write()
{
printf("%d %d %d", p - k + 1, p, v);
}
const int Lim = 100000;
int p1 = Lim - 1;
char s[Lim];
void Next()
{
if (++p1 == Lim)
fread(s, 1, Lim, stdin), p1 = 0;
}
void Get (int &x) {
bool semn = false;
for (; s[p1] < '0' || s[p1] > '9'; Next());
for (x = 0; s[p1] >= '0' && s[p1] <= '9'; Next())
{ if ( s[p1-1] == '-')
semn = true;
x = x * 10 + s[p1] - '0';
}
if( semn == true)
x*=-1;
}