AT_arc169_d [ARC169D] Add to Make a Permutation
Description
[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) $ の順列にすることです. 目標が達成可能か判定し,可能ならば必要な最小の操作回数を求めてください.
Input Format
入力は以下の形式で標準入力から与えられる.
> $ N $ $ M $ $ A_1 $ $ A_2 $ $ \cdots $ $ A_N $
Output Format
目標が達成不可能な場合,$ -1 $ を出力せよ. 可能な場合,必要な最小の操作回数を出力せよ.
Explanation/Hint
### 制約
- $ 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 $ になります.