100 atcoder#ABC148D. [ABC148D] Brick Break

[ABC148D] Brick Break

题目描述

N N 個のレンガが横一列に並んでいます。

左から i (1  i  N) i~(1\ \leq\ i\ \leq\ N) 番目のレンガには、整数 ai a_i が書かれています。

あなたはこのうち N  1 N\ -\ 1 個以下の任意のレンガを選んで砕くことができます。

その結果、K K 個のレンガが残っているとします。このとき、任意の整数 i (1  i  K) i~(1\ \leq\ i\ \leq\ K) について、残っているレンガの中で左から i i 番目のものに書かれた整数が i i であるとき、すぬけさんは満足します。

すぬけさんが満足するために砕く必要のあるレンガの最小個数を出力してください。もし、どのように砕いてもそれが不可能な場合、代わりに -1 を出力してください。

输入格式

入力は以下の形式で標準入力から与えられる。

N N a1 a_1 a2 a_2 ... ... aN a_N

输出格式

すぬけさんが満足するために砕く必要のあるレンガの最小個数を出力せよ。もし、どのように砕いてもそれが不可能な場合、代わりに -1 を出力せよ。

题目大意

我们有 NN 个砖块从左至右排成一排。
左边第 ii 块砖上写着 aia_{i}1iN1\le i\le N )。
你最多可以打破 N1N-1 块砖。
假设现在还留下了 KK 块砖,
对于每个整数 ii1iK1\le i \le K ), 如果从左数第 ii 个上的数字恰好等于 ii ,那么 Snuke 就会满意。
寻找最小的打破砖的个数,使满足 Snuke 的愿望。
如果不能,输出 1-1

by djh123456

3
2 1 2
1
3
2 2 2
-1
10
3 1 4 1 5 9 2 6 5 3
7
1
1
0

提示

制約

  • 入力は全て整数である。
  • 1  N  200000 1\ \leq\ N\ \leq\ 200000
  • 1  ai  N 1\ \leq\ a_i\ \leq\ N

Sample Explanation 1

一番左のレンガ 1 1 個を砕くと、残ったレンガに書かれた整数は左から 1 1 , 2 2 となります。 このとき、すぬけさんは満足します。

Sample Explanation 2

この場合、すぬけさんが満足するレンガの砕き方は存在しません。

Sample Explanation 4

レンガを 1 1 つも砕かなくていい場合もあります。