AT_abc148_d.[ABC148D] Brick Break
入门
通过率:0%
AC君温馨提醒
该题目为【atcoder】题库的题目,您提交的代码将被提交至atcoder进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
有 N 块砖头横向排成一列。
从左起第 i 块砖头上写有整数 ai。
你可以选择至多 N−1 块任意的砖头进行敲碎。
结果,假设剩下 K 块砖头。此时,如果对于任意整数 i (1≤i≤K),剩下的砖头中从左起第 i 块上写的整数恰好为 i,那么“すぬけさん”会感到满意。
请输出为了让“すぬけさん”满意,最少需要敲碎的砖头数。如果无论怎么敲碎都无法满足条件,则输出 −1。
输入格式
输入以以下格式从标准输入读入。
N a1 a2 … aN
输出格式
请输出为了让“すぬけさん”满意,最少需要敲碎的砖头数。如果无论如何都无法满足条件,则输出 −1。
输入输出样例
输入#1
3 2 1 2
输出#1
1
输入#2
3 2 2 2
输出#2
-1
输入#3
10 3 1 4 1 5 9 2 6 5 3
输出#3
7
输入#4
1 1
输出#4
0
说明/提示
限制条件
- 输入均为整数。
- 1≤N≤200000
- 1≤ai≤N
样例解释 1
如果敲碎最左边的 1 块砖头,剩下的砖头上写的整数从左到右为 1、2。此时,“すぬけさん”会感到满意。
样例解释 2
在这种情况下,没有任何一种敲碎砖头的方法能让“すぬけさん”满意。
样例解释 4
有时也可以一块砖头都不敲碎。