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

皮皮和小奥(躺在床上的是皮皮)
:::
在 $k$ 维欧氏空间 $\mathbb{R}^k$ 中,皮皮手中有一个向量
$$
A=(A_1,A_2,\ldots,A_k).
$$
小奥手中有一个向量
$$
B=(B_1,B_2,\ldots,B_k).
$$
现在,两只小狗希望猫猫的队友通过若干次操作修改向量 $B$,使得修改后的向量 $B$ 与向量 $A$ 垂直$^{1}$。
一次操作可以选择两个此前从未被修改过的不同位置 $i,j$,并选择一个满足 $|x|\le m$ 的**实数** $x$,随后令
$$
B_i\leftarrow B_i-x,
$$
$$
B_j\leftarrow B_j+x.
$$
请你帮助她求出,至少需要进行多少次操作,才能使修改后的向量 $B$ 与向量 $A$ 垂直。
$^{1}$ 在 $k$ 维欧氏空间 $\mathbb{R}^k$ 中,两个向量 $A$ 和 $B$ 相互垂直的充要条件是它们的点积为 $0$,即 $\sum \limits_{i=1}^{k} A_iB_i=0$。
输入格式
第一行两个整数 $k$($1 \leq k \leq 2 \times 10^5$)和 $m$($0 \leq m \leq 10^6$),分别表示向量的维数和能操作的绝对值上限。
第二行 $k$ 个整数 $A_i$($|A_i| \leq 10^6$),表示向量 $A$。
第三行 $k$ 个整数 $B_i$($|B_i| \leq 10^6$),表示向量 $B$。
输出格式
输出一个整数,表示使向量 $A$ 与修改后的向量 $B$ 垂直所需要的最少操作次数。
如果无法做到,请输出 $-1$。
说明/提示
对于样例一:
可以选择 $i=1,j=2,x=-2$,操作后向量 $B=(3,-1,1)$。
此时向量 $B$ 与 $A$ 垂直。