测评会员优惠活动进行中 · 开通 VIP,有效期内测评不限次 VIP 优惠中 · 测评不限次 立即查看

A71263. 勇士斗恶龙 (fight.cpp)

编程题 基础
知识点

题目描述

  小 X 穿越到了异世界,国王命令他招揽勇士,杀死恶龙,救回公主。
  异世界是高度数据化的。恶龙有一个攻击力 ATK,一个生命值 HP。类似的,每个勇士也有一个攻击力 Ai,一个生命值 Hi。
  战斗是回合制的,并且每次只能由一个勇士和恶龙单挑。战斗中,每个回合恶龙的生命值会减去这个勇士的攻击力,这个勇士的生命值会减去恶龙的攻击力。
  如果回合结束的时候恶龙的生命值小于等于 0,那么恶龙就被杀死了;如果这个勇士的生命值小于等于 0,那么这个勇士就被击败了,需要换上另一个勇士继续战斗。当然,如果恶龙还没有被杀死,勇士却全部被击败了,那么这场战役就彻底失败了。
  不过聪明的小 X 安排了一个特殊的战术:在一名勇士被击败后立刻让另一名勇士发起攻击,这样恶龙在勇士们的车轮战术下疲于招架,受到第二个勇士的伤害变为两倍,受到第三个勇士的伤害变为三倍……以此类推。
  现在一共有 n 名勇士报名,小 X 想问问你,如果合理安排勇士出战的顺序,最少要招揽多少名勇士才能杀死恶龙?

输入格式

第一行为一个正整数 n,表示一共有 n 名勇士报名。
第二行两个正整数 ATKHP 表示恶龙的攻击力和生命值。
接下来共有 n 行,每行两个正整数 A_iH_i 表示这名勇士的攻击力和生命值。

输出格式

输出一个整数,表示最少要招揽多少名勇士才能杀死恶龙。
如果不可能杀死恶龙,输出Fail

输入输出样例

输入 #1
2
1 9
2 2
1 1
输出 #1
2

说明/提示

样例解释
两名勇士都招揽。先派出 2 号勇士第一回合,恶龙生命值变为 8,勇士生命值变为 0。勇士被击败 紧接着派出 1 号勇士
第二回合,恶龙生命值变为 4(两倍伤害),勇士生命值变为 1
第三回合,恶龙生命值变为 0,勇士生命值变为 0。恶龙被杀死
勇士虽然也被击败了,但恶龙已经死了,所以还是胜利了!

数据范围
本题共有 10 个测试点
对于测试点 1-4 :n\leq5ATK,H_i,A_i\leq10HP\leq 100
对于测试点 5-7 :n \leq 1000ATK,H_i,A_i \leq 1000HP \leq 10^9
对于测试点 8-10 : n \leq 10^5 ATK,H_i,A_i \leq 10^6HP \leq 10^{18}