import sys
import bisect
def main():
input = sys.stdin.readline
n, m, s = map(int, input().split())
intervals = []
for _ in range(m):
l, r = map(int, input().split())
intervals.append((l, r))
intervals.sort()
starts = [l for l, r in intervals]
ends = [r for l, r in intervals]
def is_occupied(x):
idx = bisect.bisect_right(starts, x) - 1
if idx >= 0 and starts[idx] <= x <= ends[idx]:
return True
return False
for d in range(0, max(s - 1, n - s) + 1):
for candidate in [s - d, s + d]:
if 1 <= candidate <= n and not is_occupied(candidate):
print(candidate)
return
if __name__ == "__main__":
main()
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 29 30 31 | import sys import bisect def main(): input = sys.stdin.readline n, m, s = map(int, input().split()) intervals = [] for _ in range(m): l, r = map(int, input().split()) intervals.append((l, r)) intervals.sort() starts = [l for l, r in intervals] ends = [r for l, r in intervals] def is_occupied(x): idx = bisect.bisect_right(starts, x) - 1 if idx >= 0 and starts[idx] <= x <= ends[idx]: return True return False for d in range(0, max(s - 1, n - s) + 1): for candidate in [s - d, s + d]: if 1 <= candidate <= n and not is_occupied(candidate): print(candidate) return if __name__ == "__main__": main() |
English