AT_code_festival_2015_okinawa_b Beware of the Sogginess!

题目描述

[problemUrl]: https://atcoder.jp/contests/code-festival-2015-okinawa-open/tasks/code_festival_2015_okinawa_b 由于 Wolf Sothe 喜欢吃冲绳荞麦面(一种冲绳著名的食物,由面条和汤组成),他今天来到了冲绳荞麦面餐厅。这里有 $N$ 种不同的冲绳荞麦面。第 $i$ 种冲绳荞麦面最初包含 $a_i$ 克面条和 $b_i$ 克汤。 购买后,面条会吸收汤。具体来说,对于第 $i$ 种冲绳荞麦面,如果在购买后等待了 $t$ 秒($t$ 是满足 $t \geq 0$ 的实数),那么面条的重量将变为 $min(a_i + t, a_i + b_i)$ 克,汤的重量将变为 $max(b_i - t, 0)$ 克。每种冲绳荞麦面的等待时间是独立的。 Wolf Sothe 可以从 $N$ 种冲绳荞麦面中选择若干种购买。每种冲绳荞麦面只能购买一份。 Wolf Sothe 想要总共吃到不少于 $X$ 克的面条和不少于 $Y$ 克的汤。请你找出只需购买最少份数的冲绳荞麦面的方案,使得他的需求被满足。 请注意,Wolf Sothe 吃冲绳荞麦面时不需要时间,因此在吃的过程中面条不会继续吸收汤。换句话说,Wolf Sothe 吃的时候面条不会吸收汤。

输入格式

输入将通过标准输入按以下格式给出。 > $N$ $X$ $Y$ > $a_1$ $b_1$ > $a_2$ $b_2$ > $\vdots$ > $a_N$ $b_N$ - 第一行包含三个用空格分隔的整数 $N$($1 \leq N \leq 50$)、$X$($1 \leq X \leq 10\,000$)、$Y$($1 \leq Y \leq 10\,000$)。 - 接下来的 $N$ 行,每行包含两个用空格分隔的整数 $a_i$($1 \leq a_i \leq 10\,000$)、$b_i$($1 \leq b_i \leq 10\,000$)。

输出格式

请输出满足 Wolf Sothe 需求所需购买的最少份数的冲绳荞麦面。 如果不存在满足条件的方案,输出 `-1`。 输出末尾需换行。

说明/提示

## 题意说明 Wolf Sothe 想要吃到不少于 $X$ 克的面条和不少于 $Y$ 克的汤。每种冲绳荞麦面只能买一份。每份面条和汤的重量可以通过等待时间调整(面条吸收汤),每份的等待时间可以不同。 例如,样例 1 中,购买第 1 种和第 3 种冲绳荞麦面。对于第 1 种,等待 $2$ 秒再吃;对于第 3 种,立即吃。这样可以吃到 $(3+2)+(4+0)=9$ 克面条和 $(4-2)+(5-0)=7$ 克汤。 样例 2 中,即使全部购买,也无法获得 $24$ 克汤,因此输出 `-1`。 由 ChatGPT 4.1 翻译