Pagini recente » Cod sursa (job #780307) | Cod sursa (job #1686171) | Cod sursa (job #1540054) | Cod sursa (job #59580) | Cod sursa (job #2266589)
#include <iostream>
#include <fstream>
#include <deque>
using namespace std;
ifstream in("secventa.in");
ofstream out("secventa.out");
struct el{
int indice, nr;
};
int n, k;
deque <el> deq;
int main() {
ios_base::sync_with_stdio(false);
in >> n >> k;
el x;
in >> x.nr;
x.indice = 1;
deq.push_back(x);
for (int i = 2; i < k; i++) {
in >> x.nr;
x.indice = i;
while (!deq.empty() && x.nr < deq.back().nr)
deq.pop_back();
deq.push_back(x);
}
el maxi;
maxi.nr = -30005;
/* deq.pop_front();*/
for (int i = k; i <= n; i++) {
in >> x.nr;
x.indice = i;
while (!deq.empty() && x.nr < deq.back().nr) {
deq.pop_back();
}
deq.push_back(x);
if (deq.front().nr > maxi.nr) {
maxi.nr = deq.front().nr;
maxi.indice = i;
}
if (deq.back().indice - deq.front().indice == k - 1)
deq.pop_front();
}
out << maxi.indice - k + 1 << " " << maxi.indice << " " << maxi.nr;
return 0;
}