Pagini recente » Cod sursa (job #2490536) | Cod sursa (job #586216) | Cod sursa (job #46216) | Cod sursa (job #70649) | Cod sursa (job #2375659)
#include <iostream>
#include <fstream>
#include <deque>
#include <vector>
using namespace std;
ifstream f1("secventa.in");
ofstream f2("secventa.out");
int n,k,indique,maximoIndico;
deque<int> indicusMaximus;
vector<int> numere;
int main() {
f1>>n>>k;
int x;
for(int i=0;i<n;i++){
f1>>x;
numere.push_back(x);
}
indicusMaximus.push_back(0);
for(int i=1;i<k;i++){
while(!indicusMaximus.empty() && numere[indicusMaximus.back()]>numere[i])
indicusMaximus.pop_back();
indicusMaximus.push_back(i);
}
indique = k;
maximoIndico = indicusMaximus.front();
for(int i=k;i<n;i++){
if(i-k==indicusMaximus.front())
indicusMaximus.pop_front();
while(!indicusMaximus.empty() && numere[indicusMaximus.back()]>numere[i])
indicusMaximus.pop_back();
indicusMaximus.push_back(i);
if(numere[indicusMaximus.front()]>=numere[maximoIndico]){
indique = i+1;
maximoIndico = indicusMaximus.front();
}
}
for(int i = indique-k;i<indique;i++){
f2<<numere[i]<<" ";
}
f2<<numere[maximoIndico];
return 0;
}