#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 |
English