L'histoire
"2016? Très bien", grommela le vendeur de jouets Hilbert. Il ouvrit les yeux, essuya la vinaigrette à salade s'écoulant de son oreille et mangea un cremeschnitte pour le coup d'envoi du matin. Des vacances exemplaires. Il doit cependant aller travailler maintenant et terminer la comptabilité de l'année.
Noël est une période très productive de l'année, notamment pour ses ventes. Hilbert sait exactement comment cela fonctionne: une personne entre dans un magasin et achète le premier cadeau qui lui est offert. Ils paient et s'enfuient dans un autre magasin. En pratique, ce qu'est réellement le cadeau ne fait pas vraiment de différence. Le prix n'est pas non plus pertinent, à condition qu'il ne soit pas trop élevé. Tout dépend du temps restant jusqu'à Noël - plus le temps est court, plus les remords des clients sont grands, plus le prix qu'ils sont prêts à payer est élevé.
Pour Hilbert, il suffit de regarder sa montre - et il sait tout de suite combien ses clients peuvent dépenser. Il peut facilement profiter de ce fait: il trouve simplement le cadeau le plus cher qu'il peut vendre à un client donné et le leur offrir. Ce n'est que maintenant qu'il a réalisé qu'il avait oublié d'employer cette stratégie astucieuse l'année dernière. Mais ça va changer!
Néanmoins, Hilbert aimerait savoir à quel point son entreprise aurait prospéré s'il avait effectivement utilisé son grand projet. Il a réussi à dresser une liste de personnes qui sont venues dans son magasin, il n'est cependant pas sûr de combien d'argent il aurait pu gagner.
Votre tâche (TL; DR)
L'entrée consiste en une liste ascendante des prix des cadeaux disponibles et une liste des budgets des clients. La liste des budgets est dans le même ordre que les clients sont arrivés au magasin - à condition que chaque client soit prêt à payer au moins autant que le précédent, ce qui signifie qu'il est également croissant.
Pour chaque client, trouvez le cadeau le plus cher qu'il est prêt à payer et affichez son prix. Si aucun cadeau dans le budget n'est disponible, affichez a 0.
Vous obtenez un -40%bonus de caractères, si la complexité temporelle asymptotique de votre algorithme est O(n+m)(plutôt que triviale O(n*m)) Où n, msont les longueurs des listes d'entrée.
Il s'agit du code-golf , les octets les plus courts l'emportent. Les failles standard sont interdites.
Exemple
Contribution:
1 2 2 2 5 7 10 20
1 1 2 3 6 6 15 21 21 22
Production:
1 0 2 2 5 2 10 20 7 0
Cette tâche a été tirée d'un concours de programmation locale et traduite en anglais par mes soins. Voici la mission d'origine: https://www.ksp.sk/ulohy/zadania/1131/