Pagini recente » Cod sursa (job #1546523) | Cod sursa (job #2677325) | Cod sursa (job #2370440) | Cod sursa (job #2931964) | Cod sursa (job #1093636)
#include <fstream>
#include <iostream>
#include <deque>
using namespace std;
const int kMaxN = 500005, maxB = 1000000;
ifstream in("secventa.in");
ofstream out("secventa.out");
int el[kMaxN];
deque<int> deq;
char buff[maxB];
int B;
void verf() {
if (B == maxB) {
B = 0;
in.read(buff, maxB);
}
}
void cit(int &n) {
verf();
bool minus = false;
for (; not ((buff[B] >= '0' and buff[B] <= '9') or buff[B] == '-'); ++B, verf())
;
if (buff[B] == '-') {
minus = true;
++B;
verf();
}
n = 0;
for (; (buff[B] >= '0' and buff[B] <= '9'); ++B, verf()) {
n *= 10;
n += buff[B] - '0';
}
if (minus)
n *= -1;
}
int main() {
int n, k;
cit(n);
cit(k);
int mx = -0x3f3f3f3f;
for (int i = 1; i <= n; ++i)
cit(el[i]);
int c_dr;
for (int i = 1; i <= n; ++i) {
if (deq.front() == i - k)
deq.pop_front();
while (deq.size() and el[deq.back()] >= el[i])
deq.pop_back();
deq.push_back(i);
int act = el[deq.front()];
if (i >= k and mx < act) {
c_dr = i;
mx = act;
}
}
out << c_dr - k + 1 << ' ' << c_dr << ' ' << mx << '\n';
return 0;
}