Die Geschichte
"2016? Alles klar", grummelte Spielzeugverkäufer Hilbert. Er öffnete die Augen, wischte sich die Salatsauce aus dem Ohr und aß morgens eine Cremeschnitte. Vorbildliche Ferien. Er muss jetzt aber zur Arbeit gehen und die Jahresabrechnung abschließen.
Weihnachten ist eine sehr ertragreiche Zeit des Jahres, vor allem für seine Verkäufe. Hilbert weiß genau, wie es geht: Eine Person kommt in einen Laden und kauft das erste Geschenk, das ihr angeboten wird. Sie bezahlen dafür und rennen zu einem anderen Geschäft. In der Praxis macht es keinen großen Unterschied, was das Geschenk eigentlich ist. Der Preis ist auch irrelevant, sofern er nicht zu hoch ist. Alles hängt von der verbleibenden Zeit bis Weihnachten ab - je kürzer die Zeit, desto größer die Reue der Kunden, desto höher der Preis, den sie zu zahlen bereit sind.
Für Hilbert reicht ein Blick auf die Uhr - und er weiß sofort, wie viel seine Kunden ausgeben können. Diese Tatsache kann er leicht ausnutzen: Er findet nur das teuerste Geschenk, das er einem bestimmten Kunden verkaufen kann, und bietet es ihm an. Erst jetzt hat er gemerkt, dass er letztes Jahr vergessen hat, diese Liststrategie anzuwenden. Das wird sich aber ändern!
Trotzdem würde Hilbert gerne wissen, wie sehr sein Geschäft gediehen wäre, wenn er tatsächlich von seinem großen Plan Gebrauch gemacht hätte. Er hat es geschafft, eine Liste der Leute zusammenzustellen, die in sein Geschäft gekommen sind, er ist sich jedoch nicht sicher, wie viel Geld er damit hätte verdienen können.
Deine Aufgabe (TL; DR)
Die Eingabe besteht aus einer aufsteigenden Preisliste der verfügbaren Geschenke und einer Liste der Kundenbudgets. Die Liste der Budgets entspricht der Reihenfolge, in der die Kunden in den Shop gekommen sind - mit der Bedingung, dass jeder Kunde bereit ist, mindestens so viel wie der vorherige zu zahlen, was bedeutet, dass auch die Reihenfolge steigt.
Finden Sie für jeden Kunden das teuerste Geschenk, für das er bereit ist zu zahlen, und geben Sie dessen Preis aus. Wenn keine Geschenke innerhalb des Budgets verfügbar sind, geben Sie a aus 0.
Sie erhalten einen -40%Zeichenbonus, wenn die asymptotische Zeitkomplexität Ihres Algorithmus O(n+m)(und nicht die triviale O(n*m)) ist. Wo n, msind die Längen der Eingabelisten?
Dies ist Code-Golf , kürzeste Bytes gewinnt. Standardlücken sind verboten.
Beispiel
Eingang:
1 2 2 2 5 7 10 20
1 1 2 3 6 6 15 21 21 22
Ausgabe:
1 0 2 2 5 2 10 20 7 0
Diese Aufgabe wurde von einem lokalen Programmierwettbewerb übernommen und von mir ins Englische übersetzt. Hier ist die ursprüngliche Aufgabe: https://www.ksp.sk/ulohy/zadania/1131/