Pagini recente » Cod sursa (job #755375) | Cod sursa (job #3288883) | Cod sursa (job #268971) | Cod sursa (job #1925172) | Cod sursa (job #1097898)
#include <iostream>
#include <fstream>
#include <algorithm>
#include <vector>
#include <deque>
using namespace std;
ifstream fin("secventa.in");
ofstream fout("secventa.out");
const int Nmax = 5e5 + 100;
const int oo = 0x3f3f3f3f;
struct Poz_Val{
int p, v;
}E;
int N, K;
deque <Poz_Val> D;
int main()
{
fin >> N >> K;
fin >> E.v; E.p = 1;
D.push_back(E);
for(int i = 2; i <= K; i++)
{
fin >> E.v; E.p = i;
while(D.size() && D.back().v >= E.v)
D.pop_back();
D.push_back(E);
}
int best = D.front().v, st = 1, dr = K;
for(int i = K + 1; i <= N; i++)
{
fin >> E.v; E.p = i;
while(D.size() && D.back().v >= E.v)
D.pop_back();
D.push_back(E);
if(D.front().p <= i - K)
D.pop_front();
if(best < D.front().v)
{
best = D.front().v;
st = i - K + 1; dr = i;
}
}
fout << st << ' ' << dr << ' ' << best;
return 0;
}