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