题目描述
猫猫的队友由于沉迷百合小说,直到线性代数期末考试临近,才意识到自己甚至还没有翻开过课本。
在连续复习了一个通宵后,她终于支撑不住,沉沉睡去。在梦中,她见到了家里的两只小狗皮皮和小奥。它们分别捧着一个向量,向她提出了一道线性代数问题...
:::align{center}

皮皮和小奥(躺在床上的是皮皮)
:::
在 k 维欧氏空间 Rk 中,皮皮手中有一个向量
A=(A1,A2,…,Ak).
小奥手中有一个向量
B=(B1,B2,…,Bk).
现在,两只小狗希望猫猫的队友通过若干次操作修改向量 B,使得修改后的向量 B 与向量 A 垂直1。
一次操作可以选择两个此前从未被修改过的不同位置 i,j,并选择一个满足 ∣x∣≤m 的实数 x,随后令
Bi←Bi−x,
Bj←Bj+x.
请你帮助她求出,至少需要进行多少次操作,才能使修改后的向量 B 与向量 A 垂直。
1 在 k 维欧氏空间 Rk 中,两个向量 A 和 B 相互垂直的充要条件是它们的点积为 0,即 i=1∑kAiBi=0。
输入格式
第一行两个整数 k(1≤k≤2×105)和 m(0≤m≤106),分别表示向量的维数和能操作的绝对值上限。
第二行 k 个整数 Ai(∣Ai∣≤106),表示向量 A。
第三行 k 个整数 Bi(∣Bi∣≤106),表示向量 B。
输出格式
输出一个整数,表示使向量 A 与修改后的向量 B 垂直所需要的最少操作次数。
如果无法做到,请输出 −1。
3 2
1 2 -1
1 1 1
1
5 1
2 2 2 2 2
-2 3 -2 1 2
-1
提示
对于样例一:
可以选择 i=1,j=2,x=−2,操作后向量 B=(3,−1,1)。
此时向量 B 与 A 垂直。