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
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
struct p
{
    ll l;
    ll r;
};
bool operator<(p a,p b)
{
    return a.l<b.l;
}
p operator-(p a,p b)
{
    if(b<a) return b-a;
    p zw;
    zw.l=a.r+1;
    zw.r=b.l-1;
    return zw;
}
int main()
{
    cin.tie(0)->sync_with_stdio(0);
    ll n,m,s;
    cin>>n>>m>>s;
    vector <p> oni(m);
    for(int i=0;i<m;i++)
    cin>>oni[i].l>>oni[i].r;
    oni.push_back({n+1,2*n});
    sort(oni.begin(),oni.end());
    ll vic=-n,mak=2*n;
    if(oni[0].l>1) vic=oni[0].l-1;
    for(int i=1;i<m+1;i++)
        {
            p t=oni[i]-oni[i-1];
            if(t.l>t.r) continue;
            if(t.r<s) vic=t.r;
            if(t.l>s&&mak==2*n) mak=t.l;
        }
    if(abs(s-vic)>abs(mak-s)&&oni[m-1].r!=mak) cout<<mak<<"\n";
    else cout<<vic<<"\n";
}