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
#include <bits/stdc++.h>

using namespace std;
int main() {
    ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
    long long n, s;
    int m;
    cin >> n >> m >> s;
    vector < pair < long long, long long >> v(m);
    for (int i = 0; i < m; i++) {
        cin >> v[i].first >> v[i].second;
    }
    sort(v.begin(), v.end());
    int z = 0;
    while (!(v[z].first <= s && s <= v[z].second)) z++;
    long long p1 = -1, p2 = LLONG_MAX, q1 = -1, q2 = LLONG_MAX;
    for (int i = z; i < m; i++) {
        long long Lf = v[i].second + 1;
        long long Rf = (i == m - 1 ? n : v[i + 1].first - 1);
        if (Lf <= Rf && Lf <= n) {
            p1 = Lf;
            p2 = abs(s - Lf);
            break;
        }
    }
    for (int i = z; i >= 0; i--) {
        long long Lf = (i == 0 ? 1 : v[i - 1].second + 1);
        long long Rf = v[i].first - 1;
        if (Lf <= Rf && Rf >= 1) {
            q1 = Rf;
            q2 = abs(s - Rf);
            break;
        }
    }
    if (p1 == -1) cout << q1;
    else if (q1 == -1) cout << p1;
    else if (p2 < q2) cout << p1;
    else if (q2 < p2) cout << q1;
    else cout << min(p1, q1);
}