QOJ.ac

QOJ

Time Limit: 2 s Memory Limit: 1024 MB Total points: 100 Hackable ✓

#18517. November Rain

Statistics

Vous dirigez une grande symphonie en évolution. L’ensemble est composé de musiciens, chacun jouant une fréquence harmonique spécifique (représentée par un entier non négatif). Initialement, la scène est complètement vide. Au cours de $n$ étapes séquentielles, exactement une action est effectuée pour modifier l’arrangement. Pour chaque étape $i = 1, 2, \dots, n$, une opération est réalisée :

  • Si l’opération est + (Entrée) : Un nouveau musicien rejoint l’ensemble. Vous devez décider de la fréquence exacte $b_i$ qu’il jouera.
  • Si l’opération est - (Sortie) : Un musicien quitte la scène. Vous devez choisir la fréquence $b_i$ d’un musicien actuellement en train de jouer et faire en sorte qu’exactement un d’entre eux cesse de jouer.

À chaque étape, la performance est ancrée par la « Phantom Note ». En raison de l’acoustique unique de la symphonie, la Phantom Note n’est jamais réellement jouée par quiconque sur scène. Au lieu de cela, sa hauteur est toujours déterminée par la plus basse fréquence qui manque actuellement à la performance. La hauteur de la Phantom Note est mathématiquement définie comme le mex (minimum excluded value). Soit $S$ un multiensemble d’entiers non négatifs représentant la collection des fréquences actuellement jouées par l’ensemble. La valeur minimale exclue, notée $\operatorname{mex}(S)$, est le plus petit entier non négatif $x$ tel que $x \notin S$.

Après la $i$-ème action, il est exigé que la Phantom Note résonne exactement à $a_i$.

Votre tâche est de déterminer s’il existe une séquence valide de fréquences choisies $b_1, b_2, \dots, b_n$ qui orchestre parfaitement la progression requise de la Phantom Note à chaque étape, et de construire une telle séquence si elle existe.

Entrée

Ce problème comporte plusieurs cas de test. La première ligne de l’entrée contient un seul entier $t$ ($1 \le t \le 3 \cdot 10^5$), représentant le nombre de cas de test.

Pour chaque cas de test, chaque performance est décrite sur trois lignes :

  • La première ligne contient un seul entier $n$ ($1 \le n \le 5000$), représentant le nombre total d’étapes séquentielles dans la performance.
  • La deuxième ligne contient une chaîne $op$ de longueur $n$, constituée exclusivement des caractères + et -. Le caractère $op_i$ dicte la nature de la $i$-ème action : + signifie qu’un musicien entre, et - signifie qu’un musicien sort.
  • La troisième ligne contient $n$ entiers $a_1, a_2, \dots, a_n$ ($0 \le a_i \le n$), représentant la hauteur exacte requise de la Phantom Note après la $i$-ème action.

Il est strictement garanti que la somme des $n^2$ sur toutes les performances ne dépasse pas $5000^2$.

Sortie

Pour chaque performance, affichez votre résultat comme suit :

S’il est impossible d’orchestrer la progression requise de la Phantom Note, affichez une seule ligne contenant le mot NO.

Sinon, affichez deux lignes :

  • La première ligne doit contenir le mot YES ;
  • La deuxième ligne doit contenir $n$ entiers non négatifs $b_1, b_2, \dots, b_n$, représentant la fréquence spécifique jouée par le musicien qui entre ou sort à chaque étape correspondante.

Chaque fréquence $b_i$ doit parfaitement satisfaire les contraintes acoustiques et les règles opérationnelles décrites dans l’énoncé. Vous êtes autorisé à afficher n’importe quel entier non négatif valide, à condition qu’il soit représentable par un entier signé standard 64 bits.

S’il existe plusieurs séquences valides de fréquences satisfaisant la performance, vous pouvez en afficher une quelconque.

Exemples

Entrée 1

4
2
++
0 2
3
+++
0 1 3
3
+-+
1 0 2
6
++-+-+
0 2 0 0 0 1

Sortie 1

YES
1 0
YES
2 0 1
NO
YES
1 0 0 7 1 0

Remarque

Il y a quatre cas de test dans l’exemple 1.

  • Dans le premier cas de test, insérer $1$ maintient le mex (Phantom Note) à $0$, puis insérer $0$ rend le mex égal à $2$.
  • Dans le deuxième cas de test, insérer $2,0,1$ rend la séquence des mex $0,1,3$.
  • Dans le troisième cas de test, le mex $1$ après la première opération force l’insertion de $0$ ; après l’avoir effacé, une insertion supplémentaire ne peut pas rendre le mex égal à $2$, donc la réponse est NO.
  • Dans le quatrième cas de test, les valeurs affichées font évoluer le multiensemble avec une séquence des mex $0,2,0,0,0,1$.

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.