SP8407 CANDYSTN - Candies and Milestones

题目描述

小 Pratya 非常喜欢收集糖果,并且也很喜欢玩游戏。 今天,Pratya 坐在公交车上,她手里有一袋装满了 **N** 颗糖果。她透过窗户看到了路边的里程碑,上面写着一些数字。于是,她决定玩一个游戏。她想从袋子里选出一些初始数量(且不能为零)的糖果,形成她的收藏。当看到一个新的里程碑时,她会根据以下规则调整她的糖果收藏: - 设前一个里程碑的数字为 **a1**,当前里程碑的数字为 **a2**。 - 如果 **a2 > a1**:Pratya 会将 (a2 - a1) 颗糖果加入她的收藏(因此,她包里的糖果减少这些数量)。如果袋子里没有足够的糖果供她添加,她就会伤心地哭起来。 - 如果 **a2 < a1**:Pratya 会从她的收藏中取出 (a1 - a2) 颗糖果(因此,她袋子里的糖果会增加这些数量)。如果她的收藏中不够这些糖果供她取出,她又会伤心地哭起来。 - 如果 **a1 = a2**:Pratya 觉得无聊,所以她会从收藏中吃掉一颗糖果。 此外,Pratya 总是希望她的糖果收藏中至少保留一颗糖果,否则她会哭泣。给定按顺序排列的里程碑数字,找出 Pratya 开始时最少应该选择多少颗糖果,才能保证她一路上都不会哭。如果无论如何都会哭,请输出 -1。注意,看到第一个里程碑时,收藏的糖果数量不会改变。

输入格式

第一行包含测试用例的数量 **T**。每个测试用例由两行组成。第一行给出 **N** 和 **M**,其中 **N** 是袋子里的糖果总数,**M** 是里程碑的总数。第二行包含 **M** 个整数,表示 Pratya 依次看到的里程碑上的数字。 - **T** 的最大值为 150 - **N** 的范围是 $1 \leq N \leq 10^7$ - **M** 的范围是 $2 \leq M \leq 10^4$ - 每个里程碑上的数字在 $[-10^6, 10^6]$ 之间

输出格式

对于每个测试用例,输出 Pratya 在开始时应从袋子中选出的最小糖果数。如果无论如何无法满足条件,则输出 -1。 **本翻译由 AI 自动生成**