Cod sursa(job #2832489)

Utilizator NeuerRaducu Ioan Stefan Neuer Data 13 ianuarie 2022 20:17:58
Problema Secventa Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.8 kb
///#include <iostream>
#include <fstream>
#include <deque>

using namespace std;
const int SIZE = 5e5+10;

ifstream cin("secventa.in");
ofstream cout("secventa.out");

deque <int> dq;
int v[SIZE];
int n, k, maxind, maxscore;

void push2dq(int ind)
{
    while(!dq.empty() && v[dq.back()]>=v[ind])
        dq.pop_back();
    dq.push_back(ind);
}

int main()
{
    cin>>n>>k;
    for(int i=1; i<=n; i++) cin>>v[i];
    for(int i=1; i<=k; i++) push2dq(i);
    maxscore = dq.front();
    maxind = k;
    for(int i=k+1; i<=n; i++) {
        while(!dq.empty() && dq.front()<=i-k) dq.pop_front();
        push2dq(i);
        if(maxscore<v[dq.front()])
            maxscore = v[dq.front()], maxind = i;
    }
    for(int i=maxind-k+1; i<=maxind; i++)
        cout<<v[i]<<' ';
    return 0;
}