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
51
52
53
54
55
56
57
#include <iostream>
#include <algorithm>
#include <map>

using namespace std;

#define int long long

bool cmp(pair<int,int>a, pair<int,int>b){
    return a.second<b.second;
}

signed main(){
    int n,m,s; cin>>n>>m>>s;
    pair<int,int>in[m+2];
    for(int i=1; m>=i; i++){
        cin>>in[i].first>>in[i].second;
    }
    in[m+1] = {0,0};
    sort(in+1,in+m+1,cmp);

    // for(auto x : in){
    //     cout<<x.first<<" "<<x.second<<endl;
    // }cout<<endl;

    int res = 1e18;
    int odp = -1;

    for(int i=1; m>=i; i++){
        if(in[i].first-1 > in[i-1].second and in[i].first != 1){
            if(abs(s-(in[i].first-1)) < res){
                //cout<<in[i].first<<" "<<in[i].second<<endl;
                res = abs(s-(in[i].first-1));
                odp = in[i].first-1;
                //cout<<res<<" "<<odp<<endl<<endl;
            }
        }
        if(in[i].second+1<in[i+1].first){
            //cout<<"post "<<in[i].first<<" "<<in[i].second<<endl;
            if(abs(s-(in[i].second+1)) < res and in[i].second != n){
                //cout<<"post "<<in[i].first<<" "<<in[i].second<<endl;
                res = abs(s-(in[i].second+1));
                odp = in[i].second+1;
                //cout<<res<<" "<<odp<<endl<<endl;
            }
        }
    }

    if(in[m].second != n){
        if(abs(s-(in[m].second+1)) < res){
            res = abs(s-(in[m].second+1));
            odp = in[m].second+1;
        }
    }
    cout<<odp;
   // cout<<odp<<" "<<res;
}