def find_nearest_free_building(n, m, s, intervals): # Tworzymy listę zajętych budynków occupied = set() for l, r in intervals: for i in range(l, r + 1): occupied.add(i) # Szukamy najbliższego wolnego budynku left = s - 1 right = s + 1 while True: if left >= 1 and left not in occupied: return left if right <= n and right not in occupied: return right left -= 1 right += 1 # Przykład użycia if __name__ == "__main__": # Wczytanie danych wejściowych n, m, s = map(int, input().split()) intervals = [tuple(map(int, input().split())) for _ in range(m)] # Wywołanie funkcji i wyświetlenie wyniku result = find_nearest_free_building(n, m, s, intervals) print(result)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | def find_nearest_free_building(n, m, s, intervals): # Tworzymy listę zajętych budynków occupied = set() for l, r in intervals: for i in range(l, r + 1): occupied.add(i) # Szukamy najbliższego wolnego budynku left = s - 1 right = s + 1 while True: if left >= 1 and left not in occupied: return left if right <= n and right not in occupied: return right left -= 1 right += 1 # Przykład użycia if __name__ == "__main__": # Wczytanie danych wejściowych n, m, s = map(int, input().split()) intervals = [tuple(map(int, input().split())) for _ in range(m)] # Wywołanie funkcji i wyświetlenie wyniku result = find_nearest_free_building(n, m, s, intervals) print(result) |