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
#include <cstdio>
#include <vector>
#include <utility>
#include <cmath>
#include <algorithm>

using ll = long long;

using namespace std;

int main() { 
    ll n, s;
    int m;
    scanf("%lld%d%lld", &n, &m, &s);
    vector<pair<ll, ll>> interv;
    for (int i = 0; i < m; i++) {
        ll l, r;
        scanf("%lld%lld", &l, &r);
        interv.emplace_back(l, r);
    }
    sort(interv.begin(), interv.end());
    interv.emplace_back(n + 1, n + 1);
    ll prev_r = 0;
    ll best_dist = n;
    ll best_id = 0;
    for (const auto &[l, r] : interv) {
        if (l > prev_r + 1) {
            ll dst1 = abs(s - (prev_r + 1));
            if (dst1 < best_dist) {
                best_dist = dst1;
                best_id = prev_r + 1;
            }

            ll dst2 = abs(s - (l - 1));
            if (dst2 < best_dist) {
                best_dist = dst2;
                best_id = l - 1;
            }
        }
        prev_r = r;
    }
    printf("%lld\n", best_id);
}


// g++ -std=c++17 -Wall -Wextra -Wshadow C.cpp -o C