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

int main()
{
    long long n, pc, s;
    scanf("%lld%lld%lld", &n, &pc, &s);
    long long begs[pc], ends[pc];
    for (int i = 0; i < pc; i++) {
        long long a,b;
        scanf("%lld%lld", &a, &b);
        begs[i] = a;
        ends[i] = b;
    }
    sort(begs, begs+pc);
    sort(ends, ends+pc);
    for (long long i = 0; i < pc; i++) {
        if (begs[i] <= s && ends[i] >= s) {
            long long lef = begs[0] - 1, rig = ends[pc-1] + 1;
            for (int j = i-1; j >= 0; j--) {
                if (ends[j] + 1 != begs[j+1]) {
                    lef = begs[j+1]-1;
                    break;
                }
            }
            for (int j = i+1; j < pc-1; j++) {
                if (ends[j-1] + 1 != begs[j]) {
                    rig = ends[j-1]+1;
                    break;
                }
            }
            if (lef == 0) {
                printf("%lld", rig);
            }
            else if (rig == n+1) {
                printf("%lld", lef);
            }
            else {
                printf("%lld", s - lef <= rig - s ? lef : rig);
            }
            return 0;
        }
    }

}