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
#include <cstdio>
#include <algorithm>
using namespace std;

struct interval {long l; long r;};

int main()
{
  long n, s;
  int m;
  scanf("%li %i %li ", &n, &m, &s);
  interval I[m+1];
  for (int i = 0; i<m; i++) scanf("%li %li ", &I[i].l, &I[i].r);
  sort(I, I+m, [&](interval a, interval b){return a.l<b.l;});
  I[m] = {n+1, 0};
  long p = 1, q, d = n, x = 0;
  for (int i = 0; i<=m; i++)
  {
    q = I[i].l-1;
    if (p <= q)
    {
      if (labs(s-p) < d) d = labs(s-p), x = p;
      if (labs(s-q) < d) d = labs(s-q), x = q;
    }
    p = I[i].r+1;
  }
  printf("%li\n", x);
  return 0;
}