#include <cstdio> #include <vector> #include <utility> #include <cmath> #include <algorithm> using ll = long long; using namespace std; int main() { ll n, s; int m; scanf("%lld%d%lld", &n, &m, &s); vector<pair<ll, ll>> interv; for (int i = 0; i < m; i++) { ll l, r; scanf("%lld%lld", &l, &r); interv.emplace_back(l, r); } sort(interv.begin(), interv.end()); interv.emplace_back(n + 1, n + 1); ll prev_r = 0; ll best_dist = n; ll best_id = 0; for (const auto &[l, r] : interv) { if (l > prev_r + 1) { ll dst1 = abs(s - (prev_r + 1)); if (dst1 < best_dist) { best_dist = dst1; best_id = prev_r + 1; } ll dst2 = abs(s - (l - 1)); if (dst2 < best_dist) { best_dist = dst2; best_id = l - 1; } } prev_r = r; } printf("%lld\n", best_id); } // g++ -std=c++17 -Wall -Wextra -Wshadow C.cpp -o C
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 <vector> #include <utility> #include <cmath> #include <algorithm> using ll = long long; using namespace std; int main() { ll n, s; int m; scanf("%lld%d%lld", &n, &m, &s); vector<pair<ll, ll>> interv; for (int i = 0; i < m; i++) { ll l, r; scanf("%lld%lld", &l, &r); interv.emplace_back(l, r); } sort(interv.begin(), interv.end()); interv.emplace_back(n + 1, n + 1); ll prev_r = 0; ll best_dist = n; ll best_id = 0; for (const auto &[l, r] : interv) { if (l > prev_r + 1) { ll dst1 = abs(s - (prev_r + 1)); if (dst1 < best_dist) { best_dist = dst1; best_id = prev_r + 1; } ll dst2 = abs(s - (l - 1)); if (dst2 < best_dist) { best_dist = dst2; best_id = l - 1; } } prev_r = r; } printf("%lld\n", best_id); } // g++ -std=c++17 -Wall -Wextra -Wshadow C.cpp -o C |