AT_arc169_d [ARC169D] Add to Make a Permutation
题目描述
给定一个长度为 $N$ 的整数序列 $A=(A_1,A_2,\cdots,A_N)$。$A$ 的每个元素都是 $0$ 到 $N-1$ 之间的整数。
你可以进行如下操作任意次(包括 $0$ 次):
- 从 $A$ 中恰好选出 $M$ 个元素,将选中的每个元素的值加 $1$。如果加 $1$ 后某个元素的值变成了 $N$,则将其值变为 $0$。
你的目标是将 $A$ 变成 $ (0,1,\cdots,N-1) $ 的一个排列。请判断目标是否可以达成,如果可以,输出所需的最小操作次数;否则输出 $-1$。
输入格式
输入通过标准输入给出,格式如下:
> $N$ $M$ $A_1$ $A_2$ $\cdots$ $A_N$
输出格式
如果无法达成目标,输出 $-1$。如果可以,输出所需的最小操作次数。
说明/提示
### 限制条件
- $2 \leq N \leq 250000$
- $1 \leq M \leq N-1$
- $0 \leq A_i \leq N-1$
- 所有输入的值均为整数。
### 样例解释 1
可以如下进行操作,在 $2$ 次操作内达成目标。
- 初始状态:$A=(0,1,1)$
- 第 $1$ 次操作:选择 $A_1,A_2$,操作后 $A=(1,2,1)$。
- 第 $2$ 次操作:选择 $A_2,A_3$,操作后 $A=(1,0,2)$。
无法在少于 $2$ 次操作内达成目标,因此答案为 $2$。
由 ChatGPT 4.1 翻译