Librairie

Vous êtes l'auteur d'une collection de livres autrefois célèbre dont l'intrigue tourne autour de magiciens, de balais volants et de terrifiants seigneurs des ténèbres. Au sommet de votre gloire, vous avez vendu plusieurs millions de livres, à tel point que tout adolescent qui se respectait possédait la série complète. Le secret de votre succès (qui n'a jamais été révélé à quiconque), est que chaque livre que vous avez publié a une épaisseur strictement supérieure, mesurée en nombre de pages, à celles de vos livres précédents. Malheureusement, avec le temps, vous êtes tombé petit à petit dans l'obscurité et vos livres anciennement célèbres ont été progressivement oubliés.

Un jour particulièrement ennuyeux, vous vous trouvez dans une librairie. Cette dernière possède une seule étagère immense, remplie d'une quantité innombrable de livres, tous d'épaisseur différente. Les livres sont rangés sur l'étagère par ordre chronologique de parution : les plus anciens sont du côté gauche, et les plus récents sont rangés à droite.

Dans un élan de nostalgie, vous décidez de chercher les exemplaires de vos livres sur l'étagère. Tant de poussière s'est accumulée sur les livres, qu'il vous est impossible de déchiffrer les titres directement sur leur tranche. Heureusement, tous les livres présents sur l'étagère ont une épaisseur différente, et il se trouve que vous vous rappelez de l'épaisseur précise de chacun des livres que vous avez publiés, ce qui vous permet ainsi de les repérer.

Votre objectif est de trouver la position de chacun de vos livres sur l'étagère. On vous donne la liste des épaisseurs de chacun des N livres présents, ordonnées du plus vieux livre au plus récent, ainsi que la liste des épaisseurs de chacun des K livres que vous avez publiés, également du livre le plus ancien au livre le plus récent. Il n'y a pas deux livres dans la bibliothèque qui possèdent la même épaisseur, et vous êtes certain que cette dernière contient un exemplaire de chacun de vos livres.

Limites de temps et de mémoire (Python)

  • Temps : 2 s sur une machine à 1 GHz.
  • Mémoire : 16 000 ko.

Contraintes

  • 1 <= N <= 100 000, où N est le nombre de livres présents sur l'étagère.
  • 1 <= K <= N <= 100 000, où K est le nombre de livres que vous avez écrits.
  • 1 <= Ai <= 1 000 000 000, où Ai est l'épaisseur du ie livre de l'étagère.

Entrée

Votre programme doit lire sur l'entrée standard. La première ligne de l'entrée contient un entier N, le nombre de livres de l'étagère.

Les N lignes suivantes contiennent chacune un entier Ai : l'épaisseur du ie livre présent sur l'étagère. Les livres sont listés par ordre chronologique (de la gauche vers la droite). Il n'existe pas deux livres avec la même épaisseur.

La ligne suivante contient un entier K : le nombre de livres que vous avez publiés.

Les K lignes suivantes contiennent chacune un entier Bj : l'épaisseur du je livre que vous souhaitez trouver. Vos livres sont listés par ordre chronologique (donc les épaisseurs B1, ..., BK apparaîtront triées dans la liste A1, ..., AN), et chaque épaisseur est strictement plus grande que la précédente (donc B1 < B2 < ... < BK).

Sortie

Votre programme doit écrire K lignes sur la sortie standard. La je ligne de la sortie doit contenir un entier décrivant la position sur l'étagère du je livre que vous avez écrit. Le premier livre de l'étagère a la position 1 alors que le dernier a la position N.

Exemple

entrée :

9
815
223
251
97
317
1002
636
766
312
5
223
251
317
636
766

sortie :

2
3
5
7
8

Commentaires

Dans cet exemple, vous êtes devant une étagère contenant 9 livres. De plus, vous avez publié 5 livres que vous souhaitez trouver dans cette dernière. Le premier livre que vous souhaitez retrouver a une épaisseur de 223 et apparaît être le second livre sur l'étagère, ce qui signifie que la première position que vous devez renvoyer est 2. De même, vos livres restants d'épaisseurs 251, 317, 636 et 766 apparaissent respectivement aux positions 3, 5, 7 et 8 sur l'étagère.

Source : https://www.france-ioi.org/ Traduit par : Benjamin Butin.