#P1640. 吃饭(eat)

吃饭(eat)

题目描述

学校饭堂的厨师为学生做了 NN 道菜。每道菜从 11NN 编号,第 ii 道菜的甜度AiA_i咸度BiB_i

厨师可以将这些菜按照任意顺序排列。学生会按照排列好的顺序依次吃菜,但在某一时刻,如果他已经吃过的菜的甜度总和超过 XX 或咸度总和超过 YY,那么之后的菜他就不会再吃了。

厨师希望学生能尽可能多地吃到菜。请你求出厨师合理安排菜品顺序时,学生最多能吃到多少道菜。

输入格式

输入以以下格式从标准输入给出。

第一行输入三个整数 N,X,YN,X,Y

接下来 NN 行,每行输入两个整数 Ai,BiA_i,B_i

输出格式

请输出一个整数,表示学生最多能吃到的菜的数量。

输入输出样例 #1

输入 #1

4 8 4
1 5
3 2
4 1
5 3

输出 #1

3

假设厨师将菜按照 2,3,1,42,3,1,4 的顺序排列,学生的行为如下:

  • 首先吃第 22 道菜。此时已吃菜的甜度总和为 33,咸度总和为 22
  • 接着吃第 33 道菜。此时已吃菜的甜度总和为 77,咸度总和为 33
  • 然后吃第 11 道菜。此时已吃菜的甜度总和为 88,咸度总和为 88
  • 由于咸度总和超过了 Y=4Y=4,之后的菜就不会再吃了。

因此,这种排列下学生最多能吃到 33 道菜。不论厨师如何排列,学生都不可能吃到全部 44 道菜,所以答案是 33

输入输出样例 #2

输入 #2

2 1 1
3 2
3 2

输出 #2

1

输入输出样例 #3

输入 #3

2 100 100
3 2
3 2

输出 #3

2

输入输出样例 #4

输入 #4

6 364 463
230 381
154 200
328 407
339 94
193 10
115 309

输出 #4

3

数据范围

  • 1N801 \leq N \leq 80
  • 1Ai,Bi100001 \leq A_i, B_i \leq 10000
  • 1X,Y100001 \leq X, Y \leq 10000
  • 所有输入均为整数