你正在玩《Apex 英雄》,这是一款以拥有大量作弊者(又称“挂哥”,Mr. Gua,“Gua”在中文里意为作弊)而闻名的战术竞技游戏。
有一种作弊方式是修改枪械参数。例如,有人甚至可以像下面截图那样同时平行持两把枪,这让你不禁怀疑她是不是《英雄联盟》里的卢锡安。
Bilibili 视频:BV1V3411j7QW
在排位赛中输掉大量分数后,你因为“挂哥”的嚣张气焰和游戏开发商 Respawn 的不作为而感到愤怒。你决定写一封投诉信,教 Respawn 如何检测作弊者。
有人用一把枪杀死了你,该枪每发子弹造成的最大伤害为 $B$。这把枪的射速为 $R$ 发每分钟(RPM),这意味着射出一发子弹后,枪必须冷却至少 $1/R$ 分钟。有一种特殊情况 $R = 0$,这意味着玩家没有武器或弹药耗尽,因此无法造成任何伤害。
在回放中,玩家在 $S$ 秒内造成了 $D$ 点伤害,时间从第一发子弹算到最后一发子弹。如果我们说此人一定是通过修改枪械参数来作弊,这意味着他/她造成的伤害超过了其理论上的最大值。在这里,我们仅考虑由 $B, R, S$ 决定的最大可能伤害,忽略游戏中诸如弹匣容量、换弹时间和游戏漏洞等其他因素。
我们以上面截图中的“小帮手”(Wingman)手枪为例。这把枪在击中强化传奇(Fortified legends)身体时可以造成 38 点伤害,而作弊者在短短 1 秒内对敌人造成了 $152 = 38 \times 4$ 点伤害。由于该枪的射速仅为 156 RPM,因此在 1 秒内最多只能等待 $156/60 = 2.6$ 次冷却时间,这意味着最多只能射出 3 发子弹。因为 $4 > 3$,我们可以确定此人确实在作弊。
请编写一个演示程序,根据 $B, R, D, S$ 来判断玩家是否一定在作弊。
输入格式
第一行包含一个整数 $T(1 \le T \le 10^3)$,表示测试用例的数量。
对于每个测试用例,一行包含四个整数 $B, R, D, S(0 \le B, R, D, S \le 2000)$,分别表示单发子弹最大伤害、射速(RPM)、玩家造成的伤害以及从第一发子弹到最后一发子弹的时间窗口(秒)。
输出格式
对于每个测试用例,输出一行:
- 如果玩家一定在作弊,输出 “gua!”(不含引号)。
- 否则,输出 “ok”(不含引号)。
样例
输入 1
7 38 156 152 1 280 25 280 0 99 51 9 10 0 0 1 1 99 0 1 1 11 1080 209 1 11 1080 210 1
输出 1
gua! ok ok gua! gua! ok gua!
说明
第一个样例已在上述描述中解释。
对于第二个样例,使用克雷贝尔(Kraber)狙击步枪进行爆头是有可能的,此时时间窗口计为 0。我们不确定这是否真的作弊,尽管玩家有可能使用了某种辅助瞄准作弊。
第三个样例中,真正的青铜玩家表现正常,这提醒我们玩家可以使用像和平捍卫者(Peacekeeper)这样的霰弹枪造成“部分”伤害。只要总伤害量不超过最大可能伤害,我们就无法确定其是否真的作弊。
第四个和第五个样例是玩家没有武器或弹药耗尽的情况。因此,如果没有“高科技”的帮助,是不可能造成伤害的。