CF1437E Make It Increasing

题目描述

给定一个长度为 $n$ 的整数数组 $a_1, a_2, \dots, a_n$,以及一个包含 $k$ 个互不相同的整数的集合 $b$,这些整数取自 $1$ 到 $n$。 每次操作,你可以选择两个整数 $i$ 和 $x$($1 \le i \le n$,$x$ 可以是任意整数),并将 $a_i$ 赋值为 $x$。但只有当 $i$ 不属于集合 $b$ 时,才能进行此操作。 请计算最少需要多少次操作,才能使数组 $a$ 严格递增(即 $a_1 < a_2 < a_3 < \dots < a_n$),或者判断是否无法实现。

输入格式

第一行包含两个整数 $n$ 和 $k$($1 \le n \le 5 \cdot 10^5$,$0 \le k \le n$),分别表示数组 $a$ 的长度和集合 $b$ 的大小。 第二行包含 $n$ 个整数 $a_1, a_2, \dots, a_n$($1 \le a_i \le 10^9$)。 如果 $k \ne 0$,则第三行包含 $k$ 个整数 $b_1, b_2, \dots, b_k$($1 \le b_1 < b_2 < \dots < b_k \le n$)。如果 $k = 0$,则没有这一行。

输出格式

如果无法通过给定的操作使数组 $a$ 严格递增,输出 $-1$。 否则,输出一个整数,表示你需要进行的最少操作次数。

说明/提示

由 ChatGPT 4.1 翻译