Зсуви
У цьому виклику ваше завдання полягає в тому, щоб передбачити ступінь збитків, спричинених масовим зсувом. Для цього ми використовуємо наступну спрощену двовимірну модель, параметризовану за початковою висотою h >= 0
та критичним коефіцієнтом c > 0
. Ви починаєте зі скелі висоти h
, і передбачається, що місцевість повністю рівна нескінченно ліворуч і праворуч від неї. Бо h = 6
ситуація виглядає приблизно так:
##########
##########
##########
##########
##########
##########
-----------------------
Вони -
є нерухомими породами, а #
нестабільний ґрунт. Якщо різниця висот між двома сусідніми стовпчиками більша c
, виникає зсув : верхні c
одиниці ґрунту з лівого стовпчика опускаються до наступних c
стовпців праворуч, по одному до кожного. Крайній правий стовпчик на рисунку нестабільний c = 2
, тому запускається зсув:
#########
#########
##########
##########
##########
############
-----------------------
Стовпчик ще нестабільний, що спричиняє другий зсув:
#########
#########
#########
#########
############
############
-----------------------
Тепер стовпчик ліворуч став нестабільним, тому там запускається новий зсув:
########
########
#########
###########
############
############
-----------------------
Після цього скеля знову стабільна. Приємно в цій моделі те, що порядок обробки зсувів не має значення: кінцевий результат той самий.
Завдання
Вашій програмі задаються цілі параметри h
і c
як вхідні дані (порядок не має значення, але ви повинні вказати це у своїй відповіді), і вона повинна виводити загальну кількість стовпців , на які впливає зсув. Це означає кількість стовпців у отриманій стійкій скелі, висота якої суворо між 0
і h
. У наведеному вище прикладі правильний вихід 4
.
Ви можете написати повну програму або функцію. Виграє найменший кількість байтів, а стандартні лазівки заборонені.
Випробування
Вони наведені у форматі h c -> output
.
0 2 -> 0
2 3 -> 0
6 2 -> 4
6 6 -> 0
10 1 -> 10
15 1 -> 14
15 2 -> 11
15 3 -> 6
40 5 -> 16
80 5 -> 28
80 10 -> 17