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
#include <algorithm>
#include <vector>
#include <iostream>

using namespace std;

typedef long long ll;

int main() {
    ios_base::sync_with_stdio(false);
    ll a, b, n, m, s;
    cin >> n >> m >> s;
    vector<pair<ll, ll> > taken_intervals;

    for (int i = 0; i < m; i++) {
        cin >> a >> b;
        taken_intervals.emplace_back(a, b);
    }

    ranges::sort(taken_intervals);

    vector<pair<ll, ll> > free_intervals;
    ll prev = 1;

    for (const auto &[fst, snd]: taken_intervals) {
        if (fst - 1 >= prev) {
            free_intervals.emplace_back(prev, fst - 1);
        }
        prev = snd + 1;
    }
    if (prev <= n) {
        free_intervals.emplace_back(prev, n);
    }

    ll result_min = n + 1;
    ll result = -1;
    for (const auto &[fst, snd]: free_intervals) {
        if (const ll begin_distance = abs(fst - s); begin_distance < result_min) {
            result_min = begin_distance;
            result = fst;
        }
        if (ll end_distance = abs(snd - s); end_distance < result_min) {
            result_min = end_distance;
            result = snd;
        }
    }
    cout << result << endl;

    return 0;
}