Glissements de terrain
Dans ce défi, votre travail consiste à prévoir l'étendue des dommages causés par un glissement de terrain massif. Nous utilisons pour cela le modèle bidimensionnel simplifié, paramétré par une hauteur initiale h >= 0 et un coefficient critique c > 0 . Vous commencez par une falaise de hauteur h, et on suppose que le terrain est complètement plat infiniment à gauche et à droite de celui-ci. Pour h = 6, la situation ressemble à ceci:
##########
##########
##########
##########
##########
##########
-----------------------
Le -substratum rocheux est inamovible et le #sol est instable. Si la différence de hauteur entre deux colonnes voisines est supérieure à c, un glissement de terrain se produit: les cunités supérieures du sol de la colonne de gauche tombent dans les ccolonnes suivantes à droite, une à chacune. La colonne non vide la plus à droite de la figure est instable c = 2, donc un glissement de terrain est déclenché:
#########
#########
##########
##########
##########
############
-----------------------
La colonne est toujours instable, ce qui provoque un deuxième glissement de terrain:
#########
#########
#########
#########
############
############
-----------------------
Maintenant, la colonne de gauche est devenue instable, donc un nouveau glissement de terrain y est déclenché:
########
########
#########
###########
############
############
-----------------------
Après cela, la falaise est de nouveau stable. La bonne chose à propos de ce modèle est que l'ordre dans lequel les glissements de terrain sont traités n'a pas d'importance: le résultat final est le même.
La tâche
Votre programme reçoit les paramètres entiers het cen entrée (l'ordre n'a pas d'importance, mais vous devez le spécifier dans votre réponse), et il doit afficher le nombre total de colonnes affectées par le glissement de terrain. Cela signifie le nombre de colonnes dans la falaise stable résultante dont la hauteur est strictement comprise entre 0et h. Dans l'exemple ci-dessus, la sortie correcte est 4.
Vous pouvez écrire un programme complet ou une fonction. Le nombre d'octets le plus bas l'emporte et les failles standard sont interdites.
Cas de test
Ceux-ci sont donnés dans le format 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