Pagini recente » Borderou de evaluare (job #832020) | Cod sursa (job #1813267) | Cod sursa (job #585701) | Cod sursa (job #909654) | Cod sursa (job #2399910)
#include <iostream>
#include <fstream>
#include <deque>
using namespace std;
ifstream fin("secventa.in");
ofstream fout("secventa.out");
deque <pair <int, int>> d;
char s[3500005];
int main()
{
int n, k, nr, sol = -30005, poz = 0, p = 0;
fin >> n >> k;
fin.getline(s, 5);
fin.getline(s, 3500005);
for (int i = 1; i <= n; i++)
{
nr = 0;
bool kk = 0;
while (s[p] != ' ' && s[p] != NULL)
{
if (s[p] == '-')
kk = 1;
else
nr = nr * 10 + (s[p] - '0');
p++;
}
p++;
if (kk == 1)
nr *= -1;
while (!d.empty() && nr <= d.front().first)
d.pop_front();
d.push_front(make_pair(nr, i));
if (d.back().second < i - k + 1)
d.pop_back();
if (i >= k && d.back().first > sol)
{
sol = d.back().first;
poz = i;
}
}
fout << poz - k + 1 << ' ' << poz << ' ' << sol << '\n';
return 0;
}