Editorial for COCI '12 Contest 2 #4 Popust
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.
Submitting an official solution before solving the problem yourself is a bannable offence.
What does an optimal solution for a given look like? There are two possibilities:
- meals with the lowest price and one meal with the lowest price (out of the remaining meals)
- meals with the lowest price, where one of them is chosen as first (subtracting its price and replacing it with the price – obviously, the one with the lowest )
Let us sort the meals by ascending prices and solve the problem incrementally for . We will keep the current sum of prices for the first meals (sorted by ). Also, using a structure (such as a C++ STL set) we will keep the remaining, unselected, meals sorted by (to be able to find the price of the first case), and another structure will keep the selected meals, sorted by (to be able to find the price of the second case). The total complexity is if a structure query takes time.
Comments