Pagini recente » Cod sursa (job #2805899) | Cod sursa (job #2228806) | Cod sursa (job #1002173) | Cod sursa (job #17336) | Cod sursa (job #2449796)
#include <iostream>
#include <vector>
#include <fstream>
#include <cmath>
#include <cstdlib>
#include <string>
#include <map>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <deque>
#include <algorithm>
using namespace std;
ifstream fin("secventa.in");
ofstream fout("secventa.out");
struct nr
{
int val, poz;
nr(int val, int poz)
{
this->val = val;
this->poz = poz;
}
};
deque<nr>dq;
int main()
{
int n, k, Max = -100000, prez = 0, i = 0;
fin >> n >> k;
vector<nr>nrs;
for (i = 0; i < n; i++)
{
int x;
fin >> x;
nr aux(x, i);
nrs.push_back(aux);
if (i - k >= 0 && Max < dq.front().val)
Max = max(Max, dq.front().val), prez = i-1;
if (i - k >= 0 && dq.front().poz <= i-k)
dq.pop_front();
while (dq.size() != 0 && dq.back().val > x)
dq.pop_back();
dq.push_back(nr(x, i));
}
if (i - k >= 0 && Max < dq.front().val) Max = max(Max, dq.front().val), prez = i-1;
fout << prez - k + 2 << ' ' << prez+1 << ' ' << Max;
}