Tri par fusion avec comptage d’inversions
TypeScript
Hard
sorting
Tâche «Tri par fusion avec comptage d’inversions»
Étant donné un tableau d’entiers. Il faut le trier par ordre croissant à l’aide du tri par fusion, et également compter le nombre d’inversions dans le tableau initial. Une inversion est une paire d’indices (i, j) telle que i < j et a[i] > a[j]. Données d’entrée : la première ligne contient le nombre n (1 ≤ n ≤ 10^5), la deuxième ligne contient n entiers, chacun ne dépassant pas 10^9 en valeur absolue. Données de sortie : la première ligne — le nombre d’inversions, la deuxième ligne — le tableau trié séparé par des espaces.
Format d\ entrée
D’abord un entier n. Ensuite n entiers séparés par des espaces.
Format de sortie
Deux lignes : la première — le nombre d’inversions (un entier), la deuxième — le tableau trié séparé par des espaces.
Exemples
Exemple 1
ENTRÉE
5
3 1 4 2 5
SORTIE
3
1 2 3 4 5
Exemple 2
ENTRÉE
4
4 3 2 1
SORTIE
6
1 2 3 4
Exemple 3
ENTRÉE
123
SORTIE
0
Exemple 4
ENTRÉE
0
SORTIE
0
main.ts