def main():
n, m, s = map(int, input().split())
right = []
left = []
for _ in range(m):
a, b = map(int, input().split())
if a == b == s:
continue
if a == s:
a = s+1
if b == s:
b = s-1
if a < s < b:
right.append((s+1, b))
left.append((a, s-1))
elif a > s:
right.append((a, b))
else:
left.append((a, b))
right.sort(key=lambda pair_: pair_[0])
left.sort(key=lambda pair_: pair_[0], reverse=True)
min_ = 1e13
dom = 0
last = s
for pair in left:
if pair[1] != last - 1:
break
last = pair[0]
if last != 1:
min_ = s - (last - 1)
dom = last - 1
last = s
for pair in right:
if pair[0] != last + 1:
break
last = pair[1]
if last != n and min_ > last + 1 - s:
dom = last + 1
print(dom)
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 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 | def main(): n, m, s = map(int, input().split()) right = [] left = [] for _ in range(m): a, b = map(int, input().split()) if a == b == s: continue if a == s: a = s+1 if b == s: b = s-1 if a < s < b: right.append((s+1, b)) left.append((a, s-1)) elif a > s: right.append((a, b)) else: left.append((a, b)) right.sort(key=lambda pair_: pair_[0]) left.sort(key=lambda pair_: pair_[0], reverse=True) min_ = 1e13 dom = 0 last = s for pair in left: if pair[1] != last - 1: break last = pair[0] if last != 1: min_ = s - (last - 1) dom = last - 1 last = s for pair in right: if pair[0] != last + 1: break last = pair[1] if last != n and min_ > last + 1 - s: dom = last + 1 print(dom) if __name__ == "__main__": main() |
English