[ARC169D] Add to Make a Permutation
题意翻译
#### 问题陈述
给定一个长度为 $N$ 的整数序列 $A=(A_1,A_2,\cdots,A_N)$。$A$ 中的每个元素都是介于 $0$ 和 $N-1$ 之间的整数。
你可以执行以下操作任意次:
- 从 $A$ 中选择 $M$ 个元素。然后,将每个所选元素的值增加 $1$。如果某些元素的值为 $N$,则将这些值改为 $0$。
你的目标是使 $A$ 成为 $(0,1,\cdots,N-1)$ 的排列。判断这个目标是否可以实现。如果可以,请找出所需的最少运算次数。
题目描述
[problemUrl]: https://atcoder.jp/contests/arc169/tasks/arc169_d
長さ $ N $ の整数列 $ A=(A_1,A_2,\cdots,A_N) $ が与えられます. $ A $ の各要素は $ 0 $ 以上 $ N-1 $ 以下の整数です.
あなたは以下の操作を $ 0 $ 回以上行うことができます.
- $ A $ の中からちょうど $ M $ 個の要素を選ぶ. そして,選んだ要素の値をそれぞれ $ 1 $ 増加させる. 増加させたあとに値が $ N $ になっている要素があれば,その値を $ 0 $ に変更する.
あなたの目標は $ A $ を $ (0,1,\cdots,N-1) $ の順列にすることです. 目標が達成可能か判定し,可能ならば必要な最小の操作回数を求めてください.
输入输出格式
输入格式
入力は以下の形式で標準入力から与えられる.
> $ N $ $ M $ $ A_1 $ $ A_2 $ $ \cdots $ $ A_N $
输出格式
目標が達成不可能な場合,$ -1 $ を出力せよ. 可能な場合,必要な最小の操作回数を出力せよ.
输入输出样例
输入样例 #1
3 2
0 1 1
输出样例 #1
2
输入样例 #2
5 2
0 4 2 3 1
输出样例 #2
0
输入样例 #3
4 2
0 0 1 2
输出样例 #3
-1
输入样例 #4
20 15
5 14 18 0 8 5 0 10 6 5 11 2 10 10 17 9 8 14 4 4
输出样例 #4
10
说明
### 制約
- $ 2\ \leq\ N\ \leq\ 250000 $
- $ 1\ \leq\ M\ \leq\ N-1 $
- $ 0\ \leq\ A_i\ \leq\ N-1 $
- 入力される値はすべて整数.
### Sample Explanation 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 $ になります.