Mínimos dos máximos

#146
Made by: Crazynds
100MB
0.2s

Dado um array de números inteiros $A$ de tamanho $N$ e um inteiro $M$ ($1 \leq M \leq N$), sua tarefa é calcular os mínimos dos máximos em janelas de tamanho $M$.

O processo é definido em duas etapas:

  1. Primeira etapa (máximos):

    • Deslize uma janela de tamanho $M$ sobre o array original $A$.
    • Para cada posição da janela, calcule o valor máximo dentro dela.
  2. Segunda etapa (mínimos):

    • Agora, deslize novamente uma janela de tamanho $M$, mas sobre o array $B$.
    • Para cada posição dessa nova janela, calcule o valor mínimo dentro dela.

Exemplo: Seja $A = [2, 1, 4, 5, 3, 4]$ e $M = 2$.

  • Primeira etapa (máximos em janelas de tamanho 2):

    $$ B = [\max(2,1), \max(1,4), \max(4,5), \max(5,3), \max(3,4)] = [2, 4, 5, 5, 4] $$

  • Segunda etapa (mínimos em janelas de tamanho 2 sobre $B$):

    $$ C = [\min(2,4), \min(4,5), \min(5,5), \min(5,4)] = [2, 4, 5, 4] $$

Portanto, o resultado final é:

$$ C = [2, 4, 5, 4] $$

Input

Na primeira linha será dado dois inteiros $n$ e $m$ representando o tamanho do array. $(1 \le m \le n \le 10^5)$

Na segunda linha será fornecido $n$ inteiros representando o array $a_i$. $(1 \le a_i \le 10^9)$

Output

De como saida o tamanho o array final apos as operações.


Input Example
Output Example
6 2
2 1 4 5 3 4
2 4 5 4

10 2
5 4 2 1 4 5 1 3 5 7
4 2 2 4 5 3 3 5

4 1
10 6 5 2
10 6 5 2