QOJ.ac

QOJ

时间限制: 1.0 s 内存限制: 512 MB 总分: 100 可 Hack ✓

#17774. Organisation d'annuaire

统计

Alors que la réception touche à sa fin, dans le cadre d'une séquence nostalgique dédiée au dixième anniversaire de la célébration, le petit T a spécialement ressorti les précieuses archives des éditions précédentes du THUPC — une rangée d'annuaires retraçant dix ans d'histoire, mis à la disposition de tous.

Après les avoir consultés, les deux personnes s'apprêtent à remettre les annuaires sur l'étagère. Avec le passage du temps, le degré de détérioration des annuaires est devenu inégal. Le petit S, soucieux du détail, propose de les réorganiser par ordre strictement croissant de détérioration lors de leur remise en place, afin de refléter visuellement les traces laissées par le temps. Cependant, le papier des annuaires est devenu très fragile ; chaque opération ne permet que de déplacer très délicatement l'un des annuaires d'une position vers l'avant, ce qui augmente inévitablement son degré de détérioration. Plus délicat encore, le temps imparti pour le rangement est très limité. Le petit S se demande s'il est possible, en un nombre limité d'opérations, de remettre ces annuaires sur l'étagère et de les ranger de manière ordonnée.

Il y a $n$ annuaires sur une étagère. Initialement, le degré de détérioration du $i$-ième annuaire ($1 \le i \le n$) est $a_i$.

À chaque déplacement, vous devez d'abord choisir une position $p$ ($1 \le p \le n - 1$), puis déplacer le $(p+1)$-ième annuaire devant le $p$-ième annuaire. Après ce déplacement, son degré de détérioration augmente de $1$.

En raison du temps limité, vous ne pouvez effectuer qu'au maximum $n^2 - n$ déplacements au total. En tant que participant, vous devez aider le petit S à planifier une série de déplacements spécifiques afin que, finalement, les degrés de détérioration des annuaires sur l'étagère soient strictement croissants de gauche à droite.

Entrée

Chaque cas de test contient plusieurs jeux de données. La première ligne de l'entrée contient un entier positif $T$ ($1 \le T \le 10$), représentant le nombre de jeux de données. Pour chaque jeu de données :

  • La première ligne contient un entier positif $n$ ($2 \le n \le 500$), représentant le nombre d'annuaires.
  • La deuxième ligne contient $n$ entiers positifs $a_1, a_2, \dots, a_n$ ($1 \le a_i \le 10^9$), représentant le degré de détérioration initial de chaque annuaire.

Sortie

Pour chaque jeu de données, s'il existe une solution réalisable :

  • La première ligne affiche un entier non négatif $k$ ($0 \le k \le n^2 - n$), représentant le nombre de déplacements.
  • La deuxième ligne affiche $k$ entiers positifs $p_1, p_2, \dots, p_k$ ($1 \le p_i \le n - 1$), représentant la position choisie pour chaque déplacement.

S'il est impossible de rendre les degrés de détérioration des annuaires strictement croissants de gauche à droite, affichez simplement une ligne contenant l'entier $-1$.

Exemples

Entrée 1

3
2
1 2
2
2 1
3
4 5 1

Sortie 1

0

-1
2
2 1

Remarque

Pour le premier jeu de données, les degrés de détérioration sur l'étagère sont déjà strictement croissants de gauche à droite initialement.

Pour le deuxième jeu de données, on peut prouver qu'il est impossible de rendre les degrés de détérioration strictement croissants de gauche à droite en moins de $n^2 - n$ déplacements.

Pour le troisième jeu de données, une solution réalisable est la suivante : Le premier déplacement choisit la position 2, les degrés de détérioration de tous les annuaires deviennent $[4, 2, 5]$ ; Le deuxième déplacement choisit la position 1, les degrés de détérioration de tous les annuaires deviennent $[3, 4, 5]$.

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.