Pagini recente » Cod sursa (job #1485193) | Cod sursa (job #2926389) | Cod sursa (job #600375) | Cod sursa (job #3127114) | Cod sursa (job #948180)
Cod sursa(job #948180)
#include <fstream>
#include <deque>
#include <cstring>
using namespace std;
ifstream fin("secventa.in");
ofstream fout("secventa.out");
char s[3500002];
int N, K;
int nr, lg, poz, baza;
int V[500002];
deque<int> D;
int main()
{
fin >> N >> K;
fin.getline(s, 3500002);
fin.getline(s, 3500002);
lg = strlen(s);
for (int i = 0; i <= lg - 1; ++i)
{
int x = 0, semn = 1;
if (s[i] == '-')
{
semn = -1;
++i;
}
while (s[i] >= '0' && s[i] <= '9')
{
x = x * 10 + int(s[i] - '0');
++i;
}
V[++nr] = x * semn;
}
baza = -30001;
for (int i = 1; i <= N; ++i)
{
while (!D.empty() && V[i] <= V[D.back()])
D.pop_back();
D.push_back(i);
if (D.front() == i - K)
D.pop_front();
if (i >= K)
{
if (V[D.front()] > baza)
{
baza = V[D.front()];
poz = i;
}
}
}
fout << poz - K + 1 << " " << poz << " " << baza;
fin.close();
fout.close();
}