#include "iostream" #include "algorithm" #include "vector" #include "utility" int main() { long long n, s; int m; std::cin >> n >> m >> s; std::vector<std::pair<long long, long long>> segments; for (int i = 0; i < m; i++) { long long l, r; std::cin >> l >> r; segments.emplace_back(l, r); } std::sort(segments.begin(), segments.end()); std::vector<std::pair<long long, long long>> merged_segments = {segments[0]}; for (int i = 1; i < segments.size(); i++) { if (merged_segments[merged_segments.size() - 1].second + 1 == segments[i].first) { merged_segments[merged_segments.size() - 1].second = segments[i].second; } else { merged_segments.push_back(segments[i]); } } for (auto seg: merged_segments) { if (s >= seg.first && s <= seg.second) { if (s - seg.first <= seg.second - s && seg.first - 1 >= 1) { std::cout << seg.first - 1 << std::endl; } else if (seg.second + 1 <= n) { std::cout << seg.second + 1 << std::endl; } else { std::cout << seg.first - 1 << std::endl; } 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 | #include "iostream" #include "algorithm" #include "vector" #include "utility" int main() { long long n, s; int m; std::cin >> n >> m >> s; std::vector<std::pair<long long, long long>> segments; for (int i = 0; i < m; i++) { long long l, r; std::cin >> l >> r; segments.emplace_back(l, r); } std::sort(segments.begin(), segments.end()); std::vector<std::pair<long long, long long>> merged_segments = {segments[0]}; for (int i = 1; i < segments.size(); i++) { if (merged_segments[merged_segments.size() - 1].second + 1 == segments[i].first) { merged_segments[merged_segments.size() - 1].second = segments[i].second; } else { merged_segments.push_back(segments[i]); } } for (auto seg: merged_segments) { if (s >= seg.first && s <= seg.second) { if (s - seg.first <= seg.second - s && seg.first - 1 >= 1) { std::cout << seg.first - 1 << std::endl; } else if (seg.second + 1 <= n) { std::cout << seg.second + 1 << std::endl; } else { std::cout << seg.first - 1 << std::endl; } return 0; } } } |