Pagini recente » Cod sursa (job #2586476) | Cod sursa (job #2825445) | Cod sursa (job #2007703) | Solutii Autumn Warmup, Runda 3 | Cod sursa (job #2265869)
#include <fstream>
#define M 500005
using namespace std;
int n, k, a[M];
struct deque
{
int ind[M], st = 0, dr = 0;
void add(int pos)
{
while (dr - st > 0 && a[ind[dr - 1]] > a[pos])
dr--;
ind[dr++] = pos;
}
int get(int i)
{
while (i - ind[st] >= k)
st++;
return ind[st];
}
}d;
void solve()
{
ifstream f("secventa.in");
ofstream g("secventa.out");
f >> n >> k;
int x, p1 = 1, max = -30001;
for (int i = 1; i < k; i++)
{
f >> x;
a[i] = x;
d.add(i);
}
for (int i = k; i <= n; i++)
{
f >> x;
a[i] = x;
d.add(i);
int nr = d.get(i);
if (a[nr] > max)
{
max = a[nr];
p1 = i - k + 1;
}
}
g << p1 << ' ' << p1 + k - 1 << " " << max;
}
int main()
{
solve();
return 0;
}