Calculem medianes


Enviar solució

Punts: 20
Temps Límit: 1.5s
Límit de memòria: 64M

Autors/es:
tipus del problema
Estructures de Dades
Categoria
Lliga de Programació FP
Llenguatges permesos
Bash, C, C#, C++, Haskell, Java, Kotlin, PHP, Python

Mitjanes

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

En aquests moments no hi ha comentaris.