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
#include<bits/stdc++.h>
using namespace std;
using ll = long long;
constexpr ll INF = 1e18;
using pii = pair<ll, ll>;
vector<pii> prze;
ll n, m, s;

int main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  cin >> n >> m >> s;
  for(int i = 0; i < m; ++i) {
    ll l{0}, r{0};
    cin >> l >> r;
    prze.emplace_back(l, r);
  }
  sort(prze.begin(), prze.end());
  
  ll rangeID{-1}, rangeID1{-1};
  ll ans{INF}, ansID{-1};
  for(int i = 0; i < prze.size(); ++i) {
    pii range = prze[i];
    if(range.first <= s && s <= range.second) {
      rangeID = rangeID1 = i;
      break;
    }
  }
  while((rangeID + 1ll < m) && 
    (prze[rangeID].second + 1ll == prze[rangeID+1ll].first)) rangeID++;
  
  if(prze[rangeID].second+1ll <= n) {
    if(ans >= abs(s-(prze[rangeID].second+1ll))) {
      ansID = prze[rangeID].second+1ll;
      ans = abs(s-(prze[rangeID].second+1ll));
    }
  }
  while((rangeID1 - 1ll >= 0) && 
    (prze[rangeID1].first - 1ll == prze[rangeID1-1ll].second)) rangeID1--;
  
  if(prze[rangeID1].first-1ll >= 1ll) {
    if(ans >= abs(s-(prze[rangeID1].first-1ll))) {
      ansID = prze[rangeID1].first-1ll;
    }
  }
  cout << ansID << '\n';
}