Calculem medianes

En Marc està construint un model d'Intel·ligència Artificial per estimar la quantitat de gent que passa per un carrer a una hora determinada.
Gràcies a una càmera situada en un edifici des d'on es pot observar tot el carrer, el Marc ha gravat un vídeo amb tota la gent que hi ha passat al llarg del dia.
D'aquest vídeo ha escollit \(n\) imatges distribuïdes de manera regular al llarg del temps i mitjançant un programa de visió per computador ha comptat el nombre de persones que surten a cada imatge.
A l'hora de començar a entrenar el model, però, el Marc s'ha adonat que les dades no encaixaven per alguns intervals de temps, segurament pel fet que la càmera a vegades es desenfocava i el programa de visió per computador no feia bé el recompte.
Amb l'objectiu de reduir l'impacte d'aquests errors de mesura en les prediccions del model, el Marc ha decidit transformar la mostra original en una mostra més robusta, prenent com a valors les medianes de cada subconjunt de les \(m\) imatges més properes i, d'aquesta manera, descartar els valors extrems, més propensos a ser errors.
Recordem que la mediana d'una seqüència de \(m\) números és el número que queda al mig un cop ordenada la seqüència.
Per exemple: la mediana de (2, 8, 9, 3, 5, 6, 7, 4, 9) és 6, ja que està al mig de la seqüència ordenada (2, 3, 4, 5, 6, 7, 8, 9, 9).
Objectiu
Donada una seqüència de \(n\) enters i un valor \(m\), calcula la mediana de cada subseqüència consecutiva de mida \(m\).
Entrada
- Primera línia: dos enters \(n\) i \(m\), amb \(1 \le m \le n \le 200000\) i, per simplificar, \(m\) senar.
- Segona línia: \(n\) enters separats per espais. (Els valors dels enters van de \(0\) a \(10^9\))
Sortida
- Mostra les \(n - m + 1\) medianes separades per espais.
Exemple
Entrada
8 3
1 3 0 0 5 3 6 7
Sortida
1 0 0 3 5 6
Explicació de l'exemple
La primera línia indica que hi ha 8 imatges que es van seleccionant de 3 en 3
- (1, 3, 0) → (0, 1, 3)
- (3, 0, 0) → (0, 0, 3)
- (0, 0, 5) → (0, 0, 5)
- (0, 5, 3) → (0, 3, 5)
- (5, 3, 6) → (3, 5, 6)
- (3, 6, 7) → (3, 6, 7)
Comentaris