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) |
English