Cod sursa(job #893161)
#include <fstream>
#include <deque>
using namespace std;
int n, k, a[500010], start, minim;
deque <int> d;
int main()
{
ifstream f ("secventa.in");
f>>n>>k;
int i;
for (i=1; i<=n; i++)
f>>a[i];
f.close();
for (i=1; i<=n; i++)
{
while (!d.empty() && a[i] <= a[d.back()])
d.pop_back();
d.push_back(i);
if (d.front() == i-k)
d.pop_front();
if (i>=k)
{
if (a[d.front()] > minim)
{
minim = a[d.front()];
start = i-k+1;
}
}
}
ofstream g("secventa.out");
int sfarsit;
sfarsit = start+k-1;
while (start > 1 && a[start-1] >= minim)
start--;
g<<start<<" "<<sfarsit<<" "<<minim<<"\n";
g.close();
return 0;
}