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
#include <iostream>
#include <set>

int main() {
    long long n, s;
    int m;
    std::cin >> n >> m >> s;

    std::set<long long> occupied;
    occupied.insert(s);

    for (int i = 0; i < m; i++) {
        long long min, max;
        std::cin >> min >> max;
        for (long long j = min; j <= max; j++) {
            occupied.insert(j);
        }
    }

    for (long long offset = 1;; offset++) {
        long long left = s - offset, right = s + offset;

        if (left >= 1 && occupied.find(left) == occupied.end()) {
            std::cout << left;
            return 0;
        }
        if (right <= n && occupied.find(right) == occupied.end()) {
            std::cout << right;
            return 0;
        }
    }
}