Вася каждый день поднимается по одной и той же лестнице. одним шагом он может встать на следующую ступеньку или перешагнуть через одну ступеньку. он уже знает, сколькими он может подняться на верхнюю ступеньку. но недавно он обнаружил, что некоторые ступеньки обветшали, и ступать на них небезопасно. он составил список таких ступенек, и теперь интересуется, сколькими можно подняться по лестнице, не наступая на эти ступеньки.
входные данные
в первой строке вводится одно натуральное число n (n ≤ 40): количество ступенек.
во второй строке вводится одно натуральное число k (k ≤ n): количество опасных ступенек.
в третьей строке вводятся k различных натуральных чисел в диапазоне от 1 до n: номера опасных ступенек.
выходные данные
выведите одно число: количество попасть на n-ю ступеньку.
примеры
входные данные
10
3
5 1 2
выходные данные
0
входные данные
3
1
2
выходные данные
1
begin
var a:=ArrRandom(100,-10,10);
a.Println;
Writeln(a.Where(x->x>0).Count,' положительных, ',
a.Where(x->x<0).Count,' отрицательных')
end.
Тестовое решение:
4 -6 0 8 2 -2 -1 -8 -6 8 -3 7 4 -7 -5 9 0 -3 -7 1 0 -4 6 3 8 -10 4 9 3 5 8 5 5 8 10 4 -8 3 8 8 -9 2 7 -8 -7 -5 2 -9 0 9 -7 7 -2 -6 7 -2 -1 7 -10 2 4 1 -1 0 10 3 -8 6 -6 2 6 7 -1 -4 -1 8 0 3 0 2 -2 2 -1 5 1 -9 -4 1 -9 1 -6 -5 3 -4 -7 1 -7 -3 -7 1
51 положительных, 42 отрицательных
Для данной сортировки используем алгоритм сортировки слиянием
В начале разбиваем арбузы на 2 группы по 2Каждую группу взвешиваем и сортируем (т.е. всего 2 взвешивания)Теперь собираем вместе, сравниваем сначала более легкие арбузы и находим самый легкий (всего 3 взвешивания)Теперь сравниваем тяжелый арбуз, что в группе с самым легким и более легкий из другой группы, и определяем второй по легкости (всего 4 взвешивания)Потом взвешиваем оставшиеся арбузы и докладываем их по порядку (всего 5 взвешивания)