Cod sursa(job #809403)
#include <cstdio>
#include <iostream>
#include <cstdlib>
#include <fstream>
using namespace std;
#define SIZE 5000001
int deq[SIZE];
int vect[SIZE];
int main(int argc,char *argv[])
{
ifstream input("secventa.in");
ofstream output("secventa.out");
int n;
int k;
int minim = -500001;
input >> n>> k;
for (int i=0;i<n;i++)
{
input >> vect[i];
}
int poz;
int start = 0;
int end = -1;
for (int i=0;i<n;i++)
{
while (end >= start && vect[i] <= vect[deq[end]])
{
end--;
}
end++;
deq[end] = i;
while (deq[end] - deq[start] >= k) start++;
if (minim < vect[deq[start]] && i +1 >= k)
{
minim = vect[deq[start]];
poz = i;
}
}
output << poz-k+2 << " " << poz +1 <<" " << minim;
input.close();
output.close();
return 0;
}