Editorial for Nueva Tarifa


Remember to use this editorial only when stuck, and not to copy-paste code from it. Please be respectful to the problem author and editorialist.
Submitting an official solution before solving the problem yourself is a bannable offence.

Author: humbertoyusta

Subtarea 1:

Como máximaPrioridad = 10^{6} para todas las transacciones, el costo de una transacción siempre será máximaTarifa, por lo cuál simplemente hay que mantener la mayor máximaTarifa vista hasta el momento

Subtarea 2:

Como máximaPrioridad = 10^{6} para todas las transacciones, el costo de una transacción siempre será máximaTarifa, por lo cual es posible mantener un multiset con las máximaTarifa de las transacciones actuales, y en cada query responder con la mayor máximaTarifa.

Subtarea 3:

Se pueden mantener las transacciones en un vector, y en cada query recorrer el vector y probar cuál es la máxima transacción para la tarifaBase dada.

Subtarea 4:

Si se define f(x) como la respuesta para tarifaBase = x, el problema trata de hallar el minímo de funciones que son formadas por dos rectas, una con pendiente 1, y luego una con pendiente 0 a partir de un punto d.

Por tanto se puede mantener una estructura de datos por rangos que permita mantener la mejor línea con pendiente 1 y la mejor línea con pendiente 0 en cada punto x.

Subtarea 5:

Como la subtarea anterior pero usando sweep line sobre el tiempo de las queries.


Comments

There are no comments at the moment.