#C08L04P06. C08.L04.位运算与二进制枚举.附加题1.极品飞车

C08.L04.位运算与二进制枚举.附加题1.极品飞车

题目描述

Bessie想参加赛车比赛,他的赛车质量是 M(1 ≤ M ≤1000),马力是 F(1 ≤ F ≤ 1000000)。为了提升赛车性能,他可以到加工店添加一些零件。加工店有 N(1 ≤ N ≤ 20)种零件,编号 1 至 N,每种零件只有一件。

零件 PiP_i 能增加的马力是 FiF_i(1 ≤ FiF_i ≤ 1000000),它的质量是 MiM_i(1 ≤ MiM_i ≤ 1000)。根据牛顿第二定理 F = M*A,(F 是力,M 是质量,A 是加速度)。Bessie 想让他的车的加速度最大(如果有多种方案,让赛车的质量最小),他应该配置哪些零件呢?

例如:开始赛车的 F = 1500,M = 100。有 4 种零件:

i FiF_i MiM_i:

1 250 25
2 150 9
3 120 5
4 200 8

假如只配置零件 2,那么加速度将会是:(1500 + 150)/(100 + 9)= 1650 / 109 = 15.13761。

下面的表格用 4 位二进制数表示配置或不配置零件,得到各种各样的加速度:

状态 F M F/M

0000 1500 100 15.0000
0001 1700 108 15.7407
0010 1620 105 15.4286
0011 1820 113 16.1062
0100 1650 109 15.1376
0101 1850 117 15.8120
0110 1770 114 15.5263
0111 1970 122 16.1475 <-- highest F/M
1000 1750 125 14.0000
1001 1950 133 14.6617
1010 1870 130 14.3846
1011 2070 138 15.0000
1100 1900 134 14.1791
1101 2100 142 14.7887
1110 2020 139 14.5324
1111 2220 147 15.1020

因此,应该配置零件 2,3,4。

输入格式

第 1 行,三个整数:F,M,N;

第 2 至第 N + 1 行,第 i 行有两个整数:FiF_iMiM_i

输出格式

第 1 至第 P 行,P 是你要配置的零件的个数。如果不需要配置,则输出 NONE。否则从小到大输出你配置的零件的下标。答案是唯一的。

样例

1500 100 4
250 25
150 9
120 5
200 8
2
3
4