Pagini recente » Borderou de evaluare (job #2485763) | Borderou de evaluare (job #848186) | Borderou de evaluare (job #2754775) | Borderou de evaluare (job #1377198) | Cod sursa (job #2502239)
#include <fstream>
#include <queue>
using namespace std;
ifstream fin("secventa.in");
ofstream fout("secventa.out");
int main()
{
int n, k, i, x;
int bmax, ibmax;
deque <pair <int, int>> d;
fin >> n >> k;
for (i = 1; i<=k; i++)
{
fin >> x;
while (d.empty() == 0 && d.front().first > x)
d.pop_front();
d.push_front({x, i});
}
ibmax = k;
bmax = d.back().first;
for (i = k+1; i<=n; i++)
{
fin >> x;
while (d.empty() == 0 && d.front().first > x)
d.pop_front();
d.push_front({x, i});
if (i - d.back().second == k)
d.pop_back();
if (d.back().first > bmax)
{
bmax = d.back().first;
ibmax = i;
}
}
fout << ibmax - k + 1 << ' ' << ibmax << ' ' << bmax;
return 0;
}