Trier une file – Épreuve régionale 2021

Niveau 5

Énoncé

Des groupes de gens font la queue, seulement les personnes dans les groupes ne sont pas toutes arrivées en même temps et la file d'attente n'est donc pas triée par groupe.

Pour trier la file d'attente, l'opération de base et d'échanger la place de deux personnes adjacentes.

Étant donnée une position dans la file, on note $k$ le nombre de groupes qui chevauchent cette position, c'est-à-dire le nombre de groupes tels qu'au moins une personne du groupe est avant la position et au moins une personne du groupe est après la position. Comme il y a un système de réservation, le nombre de groupes $k$ qui se chevauchent n'est pas très grand (inférieur à 9).

Trouver le nombre minimum d'échange à faire pour reformer les groupes dans la queue.

Entrée

L’entrée contiendra :

  • Sur la première ligne, un entier : $n$, la taille de la file d'attente.
  • Sur la ligne suivante, un entier : $m$, le nombre de groupes présents dans la file d'attente.
  • Sur la ligne suivante, une liste de $n$ entiers séparés par des espaces : file, la file d'attente.

Sortie

Affichez le nombre minimum d'échanges à faire pour trier la file d'attente.

Contraintes

  • $10 \le n \le 10\,000$
  • $10 \le m \le 500$

Contraintes d'exécution

Utilisation mémoire maximum
10000 kilo-octets
Temps d'exécution maximum
10000 millisecondes

Exemples d'entrée/sortie

Exemple d'entrée
10
3
0 2 1 2 1 0 2 0 1 2
Exemple de sortie
15
Commentaire

Ici k = 3, l'ordre optimal est soit 0001112222 soit 0002222111.

Exemple d'entrée
20
5
0 1 0 1 2 0 0 1 1 2 2 3 3 2 3 4 3 4 4 4
Exemple de sortie
12
Commentaire

Ici k = 3, au plus 3 groupes sont mélangés à chaque position dans la file d'attente. La file triée de manière optimale est 00001111222233334444 et peut être obtenue en 12 échanges.