#include <iostream> #include <set> int main() { long long n, s; int m; std::cin >> n >> m >> s; std::set<long long> occupied; occupied.insert(s); for (int i = 0; i < m; i++) { long long min, max; std::cin >> min >> max; for (long long j = min; j <= max; j++) { occupied.insert(j); } } for (long long offset = 1;; offset++) { long long left = s - offset, right = s + offset; if (left >= 1 && occupied.find(left) == occupied.end()) { std::cout << left; return 0; } if (right <= n && occupied.find(right) == occupied.end()) { std::cout << right; 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 | #include <iostream> #include <set> int main() { long long n, s; int m; std::cin >> n >> m >> s; std::set<long long> occupied; occupied.insert(s); for (int i = 0; i < m; i++) { long long min, max; std::cin >> min >> max; for (long long j = min; j <= max; j++) { occupied.insert(j); } } for (long long offset = 1;; offset++) { long long left = s - offset, right = s + offset; if (left >= 1 && occupied.find(left) == occupied.end()) { std::cout << left; return 0; } if (right <= n && occupied.find(right) == occupied.end()) { std::cout << right; return 0; } } } |