#include <iostream> #include <utility> #include <set> struct InputData { uint64_t n; uint64_t m; uint64_t school; std::set<std::pair<uint64_t, uint64_t>> ranges; } input_data; void parse_input() { std::cin >> input_data.n >> input_data.m >> input_data.school; for (uint64_t i = 0; i < input_data.m; ++i) { uint64_t l, r; std::cin >> l >> r; input_data.ranges.emplace(l, r); } } uint64_t solve() { uint64_t res; uint64_t res_dist = input_data.n<<1; auto range_it = input_data.ranges.cbegin(); for (uint64_t i = 1; i <= input_data.n; ++i) { if (range_it != input_data.ranges.cend() && i == range_it->first) { i = range_it->second; input_data.ranges.erase(range_it); range_it = input_data.ranges.cbegin(); continue; } const uint64_t d = i > input_data.school ? i - input_data.school : input_data.school - i; // std::cerr << i << ' ' << d << ' ' << res << ' ' << res_dist << ' '; if (d < res_dist) { // std::cerr << "yes"; res = i; res_dist = d; } // std::cerr << '\n'; } return res; } int main() { std::ios_base::sync_with_stdio(false); std::cin.tie(NULL); parse_input(); std::cout << solve(); //<< '\n'; return 0; } // 708007 708988 // 709253 709765 // 709579
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 | #include <iostream> #include <utility> #include <set> struct InputData { uint64_t n; uint64_t m; uint64_t school; std::set<std::pair<uint64_t, uint64_t>> ranges; } input_data; void parse_input() { std::cin >> input_data.n >> input_data.m >> input_data.school; for (uint64_t i = 0; i < input_data.m; ++i) { uint64_t l, r; std::cin >> l >> r; input_data.ranges.emplace(l, r); } } uint64_t solve() { uint64_t res; uint64_t res_dist = input_data.n<<1; auto range_it = input_data.ranges.cbegin(); for (uint64_t i = 1; i <= input_data.n; ++i) { if (range_it != input_data.ranges.cend() && i == range_it->first) { i = range_it->second; input_data.ranges.erase(range_it); range_it = input_data.ranges.cbegin(); continue; } const uint64_t d = i > input_data.school ? i - input_data.school : input_data.school - i; // std::cerr << i << ' ' << d << ' ' << res << ' ' << res_dist << ' '; if (d < res_dist) { // std::cerr << "yes"; res = i; res_dist = d; } // std::cerr << '\n'; } return res; } int main() { std::ios_base::sync_with_stdio(false); std::cin.tie(NULL); parse_input(); std::cout << solve(); //<< '\n'; return 0; } // 708007 708988 // 709253 709765 // 709579 |