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 <bits/stdc++.h>
using namespace std;

int main() {
    long long n;
    long long m, s;
    cin >> n >> m >> s;
    vector<pair<long long, long long>> vec(m);
    for (int k=0;k<m;k++) {
        long long a,b;
        cin >> a >> b;
        vec[k] = {a, b};
    }
    vec.push_back({-1e18, 0});
    vec.push_back({n + 1, 1e18});
    m += 2;
    sort(vec.begin(), vec.end());
    long long result = (long long)vec[0].first - 1;
    int idx_of_school_interval = -1;
    for (int k=0;k<m+2;k++) {
        if(vec[k].first <= s && vec[k].second >= s) {
            idx_of_school_interval = k;
            break;
        }
    }
    long long best_left = (long long)1e18;
    for (int k=idx_of_school_interval; k > 0; k--) {
        if (vec[k-1].second != vec[k].first - 1) {
            best_left = vec[k].first - 1;
            break;
        }
    }
    
    long long best_right = (long long)-1e18;
    for (int k=idx_of_school_interval; k < m - 1; k++) {
        if (vec[k+1].first - 1 != vec[k].second) {
            best_right = vec[k].second + 1;
            break;
        }
    }
    
    if (abs(best_left - s) <= abs(best_right - s))
        cout << best_left;
    else
        cout << best_right;
}