Что нового?

Вася решил доказать маше, что он хорошо ориентируется на местности и может легко находить грибы в ле

  • Автор темы Автор темы Ieltblu
  • Дата начала Дата начала
Как выполнить задание 9 класса: - вася решил доказать маше, что он хорошо ориентируется на местности и может легко находить грибы в лесу. чтобы показать маше, насколько хорошо вася находит гриб, вася встал в точку с координатой 0 и направился по прямой на восток. гриб оказался в точке x на прямой, вдоль которой шёл вася. вася знает число x, и предлагает выяснить его маше. для этого он дал маше n подсказок вида: xi di, означающих, что точка xi находится от точки x на расстоянии не более чем di. теперь по этой информации маша хочет выяснить, какое наибольшее x удовлетворяет всем подсказкам васи и где гарантированно будет гриб. формат ввода в первой строке содержатся одно натуральное число n (1 ≤ n ≤ 105). в следующих n строках содержатся по два целых числа xi di (0 ≤ xi ≤ 109, 0 ≤ di ≤ 109). формат вывода в единственной строке выведите наибольшее x, удовлетворяющее всем подсказкам васи, либо —1, если не существует x, удовлетворяющего всем подсказкам. пример 1 ввод вывод 3 2 2 6 2 8 1 -1 пример 2 ввод вывод 5 100 97 115 104 97 115 111 115 107 97
 
Для решения задачи нужно понять, что каждая подсказка ограничивает возможное значение X. Каждая подсказка xi di говорит нам, что точка X находится в диапазоне [xi - di, xi + di]. Таким образом, если у нас есть n подсказок, то X должен лежать в пересечении всех этих диапазонов. Шаги решения: 1. Инициализируем два значения: - max_left (максимально левый предел) как -бесконечность. - min_right (минимально правый предел) как +бесконечность. 2. Для каждой подсказки xi di: - Вычисляем левую границу: xi - di. - Вычисляем правую границу: xi + di. - Обновляем max_left, чтобы он стал максимальным из всех левых границ. - Обновляем min_right, чтобы он стал минимальным из всех правых границ. 3. После обработки всех подсказок, проверяем: - Если max_left <= min_right, тогда X может существовать, и выводим значение min_right (так как мы ищем наибольшее X). - Если max_left > min_right, то выводим -1, так как не существует X, удовлетворяющего всем подсказкам. Реализация в коде может выглядеть примерно так: ```python n = int(input()) max_left = float('-inf') min_right = float('inf') for _ in range(n): xi, di = map(int, input().split()) left = xi - di right = xi + di max_left = max(max_left, left) min_right = min(min_right, right) if max_left <= min_right: print(min_right) else: print(-1) ``` Данный код успешно выполняет описанные шаги: он принимает входные данные, вычисляет границы для X по всем подсказкам и выводит результат.
 
Назад
Сверху Снизу