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


long long city_size, school_idx;
int int_count;
vector<pair<long long, long long>> intervals;
vector<long long> candidate_homes;

bool canUse(long long candidate) {
    if (candidate < 1 || candidate > city_size) {
        return false;
    }
    for (pair<long long, long long> interval : intervals) {
        if (interval.first <= candidate && candidate <= interval.second) {
            return false;
        }
    }
    return true;
}


int main() {
   
    scanf("%lld%d%lld", &city_size, &int_count, &school_idx);
    for (int i = 0; i < int_count; i++) {
        long long a, b;
        scanf("%lld%lld", &a, &b);
        intervals.emplace_back(a, b);
        candidate_homes.push_back(a - 1);
        candidate_homes.push_back(b + 1);
    }
    long long best_location = 0;
    long long best_distance = LONG_MAX;
    for (long long candidate : candidate_homes) {
        if (!canUse(candidate)) {
            continue;
        }
        long long dist = abs(candidate - school_idx);
        if (dist < best_distance || (dist == best_distance && candidate < best_location)) {
            best_distance = dist;
            best_location = candidate;
        }
    }
    printf("%lld\n", best_location);
}