Pagini recente » Cod sursa (job #766651) | Cod sursa (job #1268748) | Cod sursa (job #2106435) | Cod sursa (job #2676158) | Cod sursa (job #2550561)
#include <iostream>
#include <fstream>
#include <queue>
#include <vector>
#include <climits>
using namespace std;
ifstream fin("secventa.in");
ofstream fout("secventa.out");
const int NMAX = 0x3f3f3f3f;
int a[NMAX];
int main()
{
int N, K;
fin >> N >> K;
deque<int> dq;
int start, stop;
int bazaMax = -100000;
for (int i = 1; i <= N; ++i) {
fin >> a[i];
while (!dq.empty() && a[i] <= a[dq.back()]) {
dq.pop_back();
}
dq.push_back(i);
if (dq.front() <= i - K) {
dq.pop_front();
}
if (i >= K) {
/// daca elementul minim e mai mare decat baza maxima pe care am gasit-o pana acum
/// bazaMax este actualizat
if (a[dq.front()] > bazaMax) {
bazaMax = a[dq.front()];
start = i - K + 1; /// i - K + 1 este prima pozitie din intervalul de lungime K care se termina in i
stop = i; /// i este finalul intervalului
}
}
}
fout << start << ' ' << stop << ' ' << bazaMax << '\n';
return 0;
}