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
#include <bits/stdc++.h>
using namespace std;
#define ll long long

int main(){
    ll n, m, s;
    cin >> n >> m >> s;

    vector <pair<ll, ll>> v(m);
    for(auto &p: v) cin >> p.first >> p.second;

    v.push_back({0, 0});
    v.push_back({n+(ll)1, n+(ll)1});
    m += 2;

    sort(v.begin(), v.end());

    ll res = 1'000'000'000'000'000;
    ll odp = -1;

    for(int i = 1; i<m-1; ++i){
        if(v[i-1].second+1 != v[i].first){
            if(abs(s-v[i].first+(ll)1) < res){
                res = abs(s-v[i].first+(ll)1);
                odp = v[i].first-(ll)1;
            }else if(abs(s-v[i].first+(ll)1) == res){
                odp = min(odp, v[i].first-(ll)1);
            }
        }
    }

    for(int i = m-2; i>0; --i){
        if(v[i].second+1 != v[i+1].first){
            if(abs(s-v[i].second-(ll)1) < res){
                res = abs(s-v[i].second-(ll)1);
                odp = v[i].second+(ll)1;
            }else if(abs(s-v[i].second-(ll)1) == res){
                odp = min(odp, v[i].second+(ll)1);
            }
        }
    }

    cout << odp << "\n";
}