# Author: Bartek Knapik n, m, s = (int(el) for el in input().split()) taken = [] for _ in range(m): l, r = (int(el) for el in input().split()) taken.append([l, r]) taken = sorted(taken) taken_compressed = [] prev = taken.pop(0) while taken: cur = taken.pop(0) if cur[0] > prev[1] + 1: taken_compressed.append(prev) prev = cur else: prev[1] = cur[1] taken_compressed.append(prev) for pos in range(len(taken_compressed)): if taken_compressed[pos][0] <= s <= taken_compressed[pos][1]: break candidate_l = taken_compressed[pos][0] - 1 candidate_r = taken_compressed[pos][1] + 1 if candidate_l < 1: ans = candidate_r elif candidate_r > n: ans = candidate_l elif abs(candidate_l - s) <= abs(candidate_r - s): ans = candidate_l else: ans = candidate_r print(ans)
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 | # Author: Bartek Knapik n, m, s = (int(el) for el in input().split()) taken = [] for _ in range(m): l, r = (int(el) for el in input().split()) taken.append([l, r]) taken = sorted(taken) taken_compressed = [] prev = taken.pop(0) while taken: cur = taken.pop(0) if cur[0] > prev[1] + 1: taken_compressed.append(prev) prev = cur else: prev[1] = cur[1] taken_compressed.append(prev) for pos in range(len(taken_compressed)): if taken_compressed[pos][0] <= s <= taken_compressed[pos][1]: break candidate_l = taken_compressed[pos][0] - 1 candidate_r = taken_compressed[pos][1] + 1 if candidate_l < 1: ans = candidate_r elif candidate_r > n: ans = candidate_l elif abs(candidate_l - s) <= abs(candidate_r - s): ans = candidate_l else: ans = candidate_r print(ans) |