#include <algorithm>
#include <iostream>
#include <vector>
int main() {
int64_t n, s;
int32_t m;
std::cin >> n >> m >> s;
std::vector<std::pair<int64_t, int64_t>> ll, rr;
int64_t sl, sr;
for (int32_t i = 0; i < m; ++i) {
int64_t l, r;
std::cin >> l >> r;
if (r < s) {
ll.emplace_back(l, r);
} else if (l > s) {
rr.emplace_back(l, r);
} else {
sl = l - 1;
sr = r + 1;
}
}
std::sort(ll.begin(), ll.end(), [](auto l, auto r) { return l.first > r.first; });
for (auto lll: ll) {
if (lll.second < sl) {
break;
}
sl = lll.first - 1;
}
std::sort(rr.begin(), rr.end(), [](auto l, auto r) { return l.first < r.first; });
for (auto rrr: rr) {
if (rrr.first > sr) {
break;
}
sr = rrr.second + 1;
}
if (sl <= 0) {
std::cout << sr << "\n";
} else if (sr > n) {
std::cout << sl << "\n";
} else if (s - sl > sr - s) {
std::cout << sr << "\n";
} else {
std::cout << sl << "\n";
}
}
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 | #include <algorithm> #include <iostream> #include <vector> int main() { int64_t n, s; int32_t m; std::cin >> n >> m >> s; std::vector<std::pair<int64_t, int64_t>> ll, rr; int64_t sl, sr; for (int32_t i = 0; i < m; ++i) { int64_t l, r; std::cin >> l >> r; if (r < s) { ll.emplace_back(l, r); } else if (l > s) { rr.emplace_back(l, r); } else { sl = l - 1; sr = r + 1; } } std::sort(ll.begin(), ll.end(), [](auto l, auto r) { return l.first > r.first; }); for (auto lll: ll) { if (lll.second < sl) { break; } sl = lll.first - 1; } std::sort(rr.begin(), rr.end(), [](auto l, auto r) { return l.first < r.first; }); for (auto rrr: rr) { if (rrr.first > sr) { break; } sr = rrr.second + 1; } if (sl <= 0) { std::cout << sr << "\n"; } else if (sr > n) { std::cout << sl << "\n"; } else if (s - sl > sr - s) { std::cout << sr << "\n"; } else { std::cout << sl << "\n"; } } |
English