Олимпиадный тренинг

Задача . E. Сделай возрастающим


Задан массив из \(n\) целых чисел \(a_1\), \(a_2\), ..., \(a_n\) и набор \(b\) из \(k\) различных целых чисел от \(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\), ..., \(a_n\) (\(1 \le a_i \le 10^9\)).

Затем, если \(k \ne 0\), следует третья строка, содержащая \(k\) целых чисел \(b_1\), \(b_2\), ..., \(b_k\) (\(1 \le b_1 < b_2 < \dots < b_k \le n\)). Если \(k = 0\), то эта строка отсутствует.

Выходные данные

Если невозможно сделать массив \(a\) строго возрастающим с помощью заданных операций, выведите \(-1\).

В противном случае выведите одно целое число — минимальное количество операций, которые необходимо выполнить.


Примеры
Входные данныеВыходные данные
1 7 2
1 2 1 1 3 5 1
3 5
4
2 3 3
1 3 2
1 2 3
-1
3 5 0
4 3 1 2 3
2
4 10 3
1 3 5 6 12 9 8 10 13 15
2 4 9
3

time 2000 ms
memory 256 Mb
Правила оформления программ и список ошибок при автоматической проверке задач

Статистика успешных решений по компиляторам
 Кол-во
С++ Mingw-w645
Комментарий учителя