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 $ になります.