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
58
59
60
61
62
63
64
65
66
67
68
69
70
71
#include <bits/stdc++.h>

using namespace std;

typedef long long LL;

LL n, m, s;
vector<pair<LL, LL>> Przedzialy;
vector<pair<LL, LL>> V;
LL Pocz = -1, Kon = -1;
LL Ans;

void LaczPrzedzialy()
{
    // cerr << "Przedzialy :\n";
    // for(auto i : Przedzialy) {
    //     cerr << "{" << i.first << ", " << i.second << "} ";
    // }
    // cerr << "\n";
    for(int i = 0; i < m; i++) {
        if(Pocz == -1) {
            Pocz = Przedzialy[i].first;
            Kon = Przedzialy[i].second;
        } else {
            if(Kon + 1 == Przedzialy[i].first) {
                Kon = Przedzialy[i].second;
            } else {
                V.push_back({Pocz, Kon});
                Pocz = Przedzialy[i].first;
                Kon = Przedzialy[i].second;
            }
        }
    }
    V.push_back({Pocz, Kon});
    // cerr << "V :\n";
    // for(auto i : V) {
    //     cerr << "{" << i.first << ", " << i.second << "} ";
    // }
    // cerr << "\n";
}

int main()
{
    ios_base::sync_with_stdio(0);
    cin.tie(0);
    cin >> n >> m >> s;
    LL a, b;
    for(int i = 0; i < m; i++) {
        cin >> a >> b;
        Przedzialy.push_back({a, b});
    }
    sort(Przedzialy.begin(), Przedzialy.end());
    LaczPrzedzialy();
    for(auto i : V) {
        if(i.first <= s and i.second >= s) {
            if(i.first == 1) {
                Ans = i.second + 1;
            } else if(i.second == n) {
                Ans = i.first - 1;
            } else {
                if((s - (i.first - 1)) > ((i.second + 1) - s)) {
                    Ans = i.second + 1;
                } else {
                    Ans = i.first - 1;
                }
            }
            break;
        }
    }
    cout << Ans;
}