clay17和clay19在玩generals。
这款游戏是在一个由$r$行$c$列的网格内进行的。每个格点有几种类型,分别为国王塔,城市,普通格子,山地,沼泽。
为了方便,本题中不存在山地和沼泽两种地形。
每个玩家开局只有一个国王塔,有若干士兵,分布在他/她已占领的格子上(同一个格子不能同时被多个人占领)。他/她需要移动某一格子上的士兵去占领尽可能多的格子,占领某一格子需要至少一个士兵。但占领后格子上也可以没有士兵,且此时依然占领着该格子。玩家需找到所有对手的国王塔,并占领之。若成功占领某一对手的国王塔,则对手死亡,对手当前格子均归该玩家所有,且对手所有格子上的士兵数量都将变为一半,即若当前格子中士兵数量为$x$,被占领后则变为$\lfloor\frac{x+1}{2}\rfloor$。若所有对手的国王塔都已被占领,则该玩家在一局游戏中取得胜利。
若某个人占据了某个格子,该格子的增兵方式为:
1.若该格子为国王塔,城市或普通格子,在游戏开始后的每$25k$秒开始前,该格子的士兵数量加一。($k$为整数)
2.若该格子为国王塔或城市,将在游戏开始后的每一秒开始前,该格子的士兵数量加一。
注意,两种增兵方式互不影响,即在第$25k$秒开始前,国王塔与每个城市都将增加$2$个士兵。
现在游戏进行到了第$T$秒开始后。满足$T$是25的倍数。此时clay19共占据$x_{1}$个格子(包括国王塔和城市),$y_{1} - 1$个城市,1个国王塔,共$z_{1}$个士兵;
此时clay17共占据$x_{2}$个格子(包括国王塔和城市),$y_{2} - 1$个城市,$1$个国王塔,共$z_{2}$个士兵;
这时,老师进来了!只见clay19迅速地按下了Ctrl+Win+←;clay17也迅速地按下了Alt+Tab键。两个人的屏幕中出现了 VS code 的界面。上面都写着一段经典的代码
#include <stdio.h>
int main()
{
printf("Hello World\n");
return 0;
}
老师盯着他们好久好久,总感觉有点不对劲。毕竟,没有哪个人写代码是只用 WASD 键和鼠标的。
时间一分一秒地流逝,老师没有发现他们的秘密,终于离开了。这时,不太擅长打发育的clay17发现,clay19的士兵数量总和已经比她多了!
她想知道,clay19第一次比她的士兵总和多的时间是多少。
也就是说,若clay17和clay19在$T$秒开始后不进行任何操作,你要找到最小的非负整数$x$,使得距离游戏开始的第$T+x$秒开始后,clay19的士兵总和严格大于clay17的士兵总和。如果不存在这样的$x$,请输出$-1$。
第一行一个整数$n$,表示数据组数。
接下来$n$行,每一行$6$个整数,分别为$x_{1}$,$y_{1}$,$z_{1}$,$x_{2}$,$y_{2}$,$z_{2}$,意义如上所述。
显然,本题并不需要用到$T$,因为一定有$T$是25的倍数。
数据保证: $n\le10^{5},1\le x_{1}, y_{1}, z_{1}, x_{2}, y_{2}, z_{2} \le 10^{8} $
共$n$行,每行一个整数,表示最小的非负整数$x$,若不存在$x$,请输出 $-1$。
7
1 1 2 1 1 1
102 3 10 128 2 34
102 3 10 128 2 33
9982 2447 8734 9999 2445 348345
9982 2445 4783 9900 2447 763874
2 1 1 1 1 100000000
100000000 100000000 1 1 1 100000000
0
-1
24
257271
593050
2500000000
2