La historia
"2016? Muy bien", se quejó el vendedor de juguetes Hilbert. Abrió los ojos, se limpió el aderezo de ensalada que le goteaba de la oreja y se comió un cremoschnitte de arranque. Vacaciones ejemplares. Sin embargo, debe ir a trabajar ahora y terminar la contabilidad del año.
La Navidad es un período muy productivo del año, especialmente por sus ventas. Hilbert sabe exactamente cómo funciona: una persona entra en una tienda y compra el primer regalo que le ofrecen. Lo pagan y se van corriendo a otra tienda. En la práctica, lo que realmente es el regalo no hace la diferencia. El precio también es irrelevante, siempre que no sea demasiado alto. Todo depende del tiempo restante hasta Navidad: cuanto más corto es el tiempo, mayor es el remordimiento de los clientes, mayor es el precio que están dispuestos a pagar.
Todo lo que necesita Hilbert es mirar su reloj, y él sabe de inmediato cuánto pueden gastar sus clientes. Puede aprovechar fácilmente este hecho: encuentra el regalo más caro que puede vender a un cliente determinado y se lo ofrece. Solo ahora se ha dado cuenta de que olvidó emplear esta astuta estrategia el año pasado. ¡Eso va a cambiar sin embargo!
Sin embargo, a Hilbert le gustaría saber cuánto habría florecido su negocio si hubiera utilizado su gran esquema. Se las arregló para armar una lista de personas que vinieron a su tienda, sin embargo, no está seguro de cuánto dinero podría haber ganado con ellos.
Tu tarea (TL; DR)
La entrada consiste en una lista ascendente de precios de regalos disponibles y una lista de presupuestos de clientes. La lista de presupuestos está en el mismo orden en que los clientes llegaron a la tienda, con la condición de que cada cliente esté dispuesto a pagar al menos tanto como el anterior, lo que significa que también está ascendiendo.
Para cada cliente, encuentre el regalo más caro por el que está dispuesto a pagar y envíe su precio. Si no hay regalos disponibles dentro del presupuesto, salida a 0.
Obtiene una -40%bonificación de caracteres, si la complejidad de tiempo asintótica de su algoritmo es O(n+m)(en lugar de la trivial O(n*m)) ¿Dónde n, mestán las longitudes de las listas de entrada?
Este es el código de golf , gana los bytes más cortos. Las lagunas estándar están prohibidas.
Ejemplo
Entrada:
1 2 2 2 5 7 10 20
1 1 2 3 6 6 15 21 21 22
Salida:
1 0 2 2 5 2 10 20 7 0
Esta tarea fue tomada de una competencia de programación local y traducida al inglés por mí. Aquí está la tarea original: https://www.ksp.sk/ulohy/zadania/1131/