洛谷-P2006 赵神牛的游戏
洛谷-P2006 赵神牛的游戏
题目描述
在 DNF 中,赵神牛有一个缔造者,他一共有 \(k\) 点法力值,一共有 \(m\) 个技能,每个技能耗费的法力值为 \(a_i\),可以造成的伤害为 \(b_i\),而 boss 的体力值为 \(n\),请你求出它放哪个技能,才可以打死 boss。
当然,赵神牛技术很菜,他一局只放一个技能,不过每个技能都可以放无数次。
输入格式
第一行有三个整数,分别表示 \(k,m,n\)。
后面 \(m\) 行,每行两个整数,第 \((i + 1)\) 行的整数表示耗费的法力值 \(a_i\) 和造成的伤害 \(b_i\)。
输出格式
输出仅一行,既可以杀死 boss 的技能序号,如果有多个,按从小到大的顺序输出,中间用一个空格隔开;如果没有技能能杀死 boss,输出 -1
。
输入输出样例
输入 #1
100 3 5000
20 1000
90 1
110 10000
输出 #1
1
输入 #2
50 4 10
60 100
70 1000
80 1000
90 0
输出 #2
-1
说明/提示
数据规模与约定
对于全部的测试点,满足:
- \(0\le n,m,k\le 3\times 10^4\),
- \(1 \leq a_i,b_i\le 2147483647\)。
C++代码
#include <iostream>
#include <cmath>
using namespace std;
int main() {
int k, m, n, j=0;
cin >> k >> m >> n;
int a[m], b[m], ans[m];
for (int i=0; i<m; ++i)
cin >> a[i] >> b[i];
for (int i=0; i<m; ++i)
if (ceil(n*1.0/b[i])*a[i] <= k)
ans[j++] = i + 1;
if (j == 0)
cout << -1;
for (int i=0; i<j; ++i)
cout << ans[i] << ' ';
cout << endl;
return 0;
}