#include <iostream>
#include <vector>
#include <algorithm>
#include <cassert>
using ll = long long;
#define debug(x) #x << " = " << x << '\n'
int main() {
#ifdef LOCAL
freopen("input.txt", "r", stdin);
#endif
std::ios_base::sync_with_stdio(false);
std::cin.tie(0);
ll n, s;
int m;
std::cin >> n >> m >> s;
std::vector<std::pair<ll, ll>> a(m);
for (auto &[l, r] : a) {
std::cin >> l >> r;
}
std::sort(a.begin(), a.end());
std::vector<std::pair<ll, ll>> free;
free.push_back({1, a[0].first - 1});
for (int i = 0; i + 1 < m; i++) {
free.push_back({a[i].second + 1, a[i + 1].first - 1});
}
free.push_back({a[m - 1].second + 1, n});
std::sort(free.begin(), free.end());
ll where = -1;
ll minDist = n + 1;
auto chmin = [&](ll p) {
if (std::abs(s - p) < minDist) {
minDist = std::abs(s - p);
where = p;
} else if (std::abs(s - p) == minDist) {
if (p < where) {
where = p;
}
}
};
for (const auto &[l, r] : free) {
if (l <= r) {
chmin(l);
chmin(r);
if (l <= s && s <= r) {
chmin(s);
}
}
}
std::cout << where;
return 0;
}
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 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 | #include <iostream> #include <vector> #include <algorithm> #include <cassert> using ll = long long; #define debug(x) #x << " = " << x << '\n' int main() { #ifdef LOCAL freopen("input.txt", "r", stdin); #endif std::ios_base::sync_with_stdio(false); std::cin.tie(0); ll n, s; int m; std::cin >> n >> m >> s; std::vector<std::pair<ll, ll>> a(m); for (auto &[l, r] : a) { std::cin >> l >> r; } std::sort(a.begin(), a.end()); std::vector<std::pair<ll, ll>> free; free.push_back({1, a[0].first - 1}); for (int i = 0; i + 1 < m; i++) { free.push_back({a[i].second + 1, a[i + 1].first - 1}); } free.push_back({a[m - 1].second + 1, n}); std::sort(free.begin(), free.end()); ll where = -1; ll minDist = n + 1; auto chmin = [&](ll p) { if (std::abs(s - p) < minDist) { minDist = std::abs(s - p); where = p; } else if (std::abs(s - p) == minDist) { if (p < where) { where = p; } } }; for (const auto &[l, r] : free) { if (l <= r) { chmin(l); chmin(r); if (l <= s && s <= r) { chmin(s); } } } std::cout << where; return 0; } |
English