U332191 翻硬币

题目背景

由于数据较大,仅上传部分数据

题目描述

xpz很无聊,他从家里找出了一堆硬币,共有$n$个,并把他们**排成一列** 。一开始,这些硬币都是**数字面朝上的**,并且,xpz有一种奇怪的能力,他能通过意念**将连续的$m$个硬币翻转**。但是xpz实在是太菜了,每次只能恰好翻转$m$个硬币,**多一个少一个都不行**。现在xpz想把这一列硬币翻转成他想要的样子。由于xpz实在是太蠢了,不知道要怎么运用他的能力,于是他找到了正在某经济特区知名中学参加信息学竞赛集训的你,希望你能告知他**最少**需要几次才能翻转成他想要的结果。

输入格式

**该题数据较多,请使用较快的读入方式!** 第一行输入一个正整数 $T$ 。 接下来 $2T$ 行,每两行的第一行两个个正整数 $n$ 和 $m$ ,含义如题目描述。第二行$n$个整数$a_i$,代表xpz想要的状态,$a_i = 0$ 时表示第 $i$ 个硬币数字面朝上,$a_i = 1$ 时表示第 $i$ 个硬币数字面朝下。

输出格式

共输出 $T$ 行,每行输出一个整数。如果可以达到最终状态,则输出要求最少次数;如果达不到最终状态,则输出 $-1$。

说明/提示

第一组数据,xpz可以分别翻转三号和四号硬币。 第二组数据,xpz可以同时翻转三号和四号硬币。 第三组数据,显然xpz无论怎么翻转都到达不了目标。 **【数据范围】** - 对于 $30\%$ 的数据:$1\le m \le n\le 10^3,1\le n*T\le 5\times 10^3$ - 对于另外 $10\%$ 的数据:$m = 1$ - 对于 $100\%$ 的数据:$1\le m \le n\le 10^6,1\le \sum n*T\le 5\times 10^6$ 由于数据过大,仅上传部分测试数据。