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

Задача . B. Злой Monk


K1o0n, пустившись в празднование выздоровления, испек огромную \(n\)-метровую картофельную запеканку.

Оказывается, Noobish_Monk просто ненавидит картофель, поэтому он решил испортить блюдо K1o0n и порезал его на \(k\) кусочков целой длины \(a_1, a_2, \dots, a_k\) метров.

K1o0n был раздосадован, увидев такой террор. Благо все еще можно поправить, за одну операцию он может сделать одно из следующих действий:

  • Выбрать кусок длины \(a_i \ge 2\) и разделить на два куска с длинами \(1\) и \(a_i - 1\). В результате этого действия количество кусков увеличится на \(1\);
  • выбрать кусок \(a_i\) и кусок \(a_j=1\), где \(i \ne j\), и соединить их в один кусок длины \(a_i+1\). В результате этого действия количество кусков уменьшится на \(1\).

Помогите K1o0n определить минимальное количество операций, которое ему предстоит сделать, чтобы склеить запеканку в один целый кусок длины \(n\).

Например, если \(n=5\), \(k=2\), \(a = [3, 2]\), то оптимально действовать следующим образом:

  1. Разделить кусок длины \(2\) на куски длины \(1\) и \(2-1=1\), в результате \(a = [3, 1, 1]\).
  2. Соединить кусок длины \(3\) с куском длины \(1\), в результате \(a = [4, 1]\).
  3. Соединить кусок длины \(4\) с куском длины \(1\), в результате \(a = [5]\).
Входные данные

Первая строка содержит одно целое число \(t\) (\(1 \le t \le 10^4\)) — количество наборов входных данных.

В первой строке каждого набора дано два целых числа \(n\) и \(k\) (\(2 \le n \le 10^9\), \(2 \le k \le 10^5\)) — длина картофельной запеканки в метрах и количество кусочков после пакости Noobish_Monk.

Во второй строке каждого набора содержится \(k\) целых чисел \(a_1, a_2, \ldots, a_k\) (\(1 \le a_i \le n - 1\), \(\sum a_i = n\)) — длины кусочков, на которые Noobish_Monk разрезал изначальную запеканку.

Гарантируется, что сумма \(k\) по всем \(t\) наборам данных не превосходит \(2 \cdot 10^5\).

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

Для каждого набора входных данных, выведите минимальное количество операций, за которое K1o0n сможет восстановить свою запеканку после террора Noobish_Monk.


Примеры
Входные данныеВыходные данные
1 4
5 3
3 1 1
5 2
3 2
11 4
2 3 1 5
16 6
1 6 1 1 1 6
2
3
9
15

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

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