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
#include<iostream>
#include<algorithm>
#include<cmath>
#define ll long long
using namespace std;

bool war(pair<ll, ll> a, pair<ll, ll> b)
{
    return (a.second<b.second);
}

ll abs2(ll a)
{
    if(a<0)
        return -1*a;
    else return a;
}

int main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(0);
    ll n, m, s;
    cin >> n >> m >> s;
    pair<ll, ll> przedzialy[m];
    pair<ll, ll> pom={-1,-1};
    ll indeks=-1;
    for(int i=0; i<m; i++)
    {
        cin >> przedzialy[i].first >> przedzialy[i].second;
        if(s<=przedzialy[i].second && s>=przedzialy[i].first)
            pom = przedzialy[i];
    }
    sort(przedzialy, przedzialy+m, war);
    for(int i=0; i<m; i++)
        if(przedzialy[i]==pom)
            indeks = i;
    ll min_roznica=1e13, p=-1;
    for(int i=indeks; i>=0; i--)
    {
        if((i>0 && przedzialy[i].first-przedzialy[i-1].second>1) || (przedzialy[i].first>1 && i==0))
        {
            min_roznica = abs2(przedzialy[i].first-1-s);
            p=przedzialy[i].first-1;
            break;
        }
    }
    for(int i=indeks; i<m; i++)
    {
        if((i<m-1 && przedzialy[i+1].first-przedzialy[i].second>1) || (i==m-1 && przedzialy[i].second+1<=n))
        {
            if(abs2(przedzialy[i].second+1-s)<min_roznica)
            {
                p = przedzialy[i].second+1;
                min_roznica = abs2(p-s);
                break;
            }
        }
    }
    cout << p;
    return 0;
}