IOI '09 - Plovdiv, Bulgaria
You have to hire workers for a construction project. There are
You have
The nature of your project is such that the qualification level is completely irrelevant, so you are only interested in maximizing the number of workers without regard to their qualification level. However, if there is more than one way to achieve this, then you want to select the one where the total amount of money you have to pay your workers is as small as possible. In case there is more than one way to achieve this, then you are indifferent among these ways and you would be satisfied with any one of them.
Write a program that, given the different salary requirements and qualification levels of the candidates, as well as the amount of money you have, determines which candidates you should hire. You must hire as many of them as possible and you must do so with as little money as possible, while complying with the industry regulations specified above.
Input Specification
Your program must read from standard input the following data:
- The first line contains the integers
and , separated by a space. - The next
lines describe the candidates, one candidate per line. The th of these lines describes candidate number and it contains the integers and , separated by a space.
Output Specification
Your program must write to standard output the following data:
- The first line must contain a single integer
, the number of workers that you hire. - The next
lines must list the identifying numbers of the candidates you choose to hire (each of them a different number between and ), one per line, in any order.
Scoring
For any given test case, you will receive full points if your choice of
candidates enables you to achieve all of your goals, while satisfying
all constraints. If you produce an output file with a correct first line
(i.e., a correct value of
For a number of tests, worth a total of 50% of the points,
Sample Input 1
4 100
5 1000
10 100
8 10
20 1
Sample Output 1
2
2
3
Explanation 1
The only combination for which you can afford to hire two workers and still meet all the constraints is if you select workers 2 and 3. You can pay them 80 and 8 dollars respectively and thus fit in your budget of 100.
Sample Input 2
3 4
1 2
1 3
1 3
Sample Output 2
3
1
2
3
Explanation 2
Here you can afford to hire all three workers. You pay 1 dollar to worker 1 and 1.50 dollars each to workers 2 and 3, and you manage to hire everyone with the 4 dollars that you have.
Sample Input 3
3 40
10 1
10 2
10 3
Sample Output 3
2
2
3
Explanation 3
Here you cannot afford to hire all three workers, as it would cost you 60 dollars, but you can afford to hire any two of them. You choose to hire workers 2 and 3 because they would cost you the smallest sum of money, compared to the other two-worker combinations. If you were to hire workers 1 and 2 you would have to pay them at least 10 and 20 dollars respectively. If you were to hire 1 and 3, then you would have to pay them at least 10 and 30 dollars respectively.
Comments