Pagini recente » Cod sursa (job #2467195) | Cod sursa (job #1092465) | Cod sursa (job #3198829) | Cod sursa (job #764017) | Cod sursa (job #2360706)
#include <fstream>
#include <iostream>
#include <deque>
using namespace std;
ifstream fin("secventa.in");
ofstream fout("secventa.out");
deque<int> Q;
int a[500001], n, k, I, J;
int poz, Max = -0x3f3f3f3f;
void Get(int &x);
int main()
{
Get(n); Get(k);
for (int i = 1; i <= n; ++i)
{
Get(a[i]);
if (!Q.empty() && Q.front() <= i - k)
Q.pop_front();
while (!Q.empty() && a[Q.back()] > a[i])
Q.pop_back();
Q.push_back(i);
if (a[Q.front()] > Max && i >= k)
{
Max = a[Q.front()];
I = i - k + 1;
J = i;
}
}
fout << I << ' ' << J << ' ' << Max;
return 0;
}
const int Lim = 1 << 20;
int p1 = Lim - 1;
char s[Lim];
void Next()
{
if (++p1 == Lim)
fin.get(s, Lim + 1, EOF), p1 = 0;
}
void Get(int &x)
{
while (s[p1] < '0' || s[p1] > '9')
{
if (s[p1] == '-')
break;
Next();
}
int sgn = 1;
if (s[p1] == '-')
{
sgn = -1;
Next();
}
for (x = 0; s[p1] >= '0' && s[p1] <= '9'; Next())
x = x * 10 + s[p1] - '0';
x *= sgn;
}