def domino_fall(tiles): n = len(tiles) fallen = [False] * n # массив состояния, падает или нет # Падение слева направо for i in range(n): position, height = tiles[i] if fallen[i]: # Если уже упала, пропускаем continue # Падение вправо if i < n - 1 and position + height >= tiles[i + 1][0]: fallen[i + 1] = True # Падение справа налево for i in range(n - 1, -1, -1): position, height = tiles[i] if fallen[i]: # Если уже упала, пропускаем continue # Падение влево if i > 0 and position - height <= tiles[i - 1][0]: fallen[i - 1] = True # Подсчет упавших костяшек total_fallen = sum(fallen) + n # учитываем текущую костяшку как упавшую return total_fallen # Пример использования tiles = [(5, 1), (7, 2), (8, 1)] # координаты и высоты print(domino_fall(tiles)) # Выведет общее количество упавших костяшек