#include <bits/stdc++.h> using namespace std; int main() { long long n; long long m, s; cin >> n >> m >> s; vector<pair<long long, long long>> vec(m); for (int k=0;k<m;k++) { long long a,b; cin >> a >> b; vec[k] = {a, b}; } vec.push_back({-1e18, 0}); vec.push_back({n + 1, 1e18}); m += 2; sort(vec.begin(), vec.end()); long long result = (long long)vec[0].first - 1; int idx_of_school_interval = -1; for (int k=0;k<m+2;k++) { if(vec[k].first <= s && vec[k].second >= s) { idx_of_school_interval = k; break; } } long long best_left = (long long)1e18; for (int k=idx_of_school_interval; k > 0; k--) { if (vec[k-1].second != vec[k].first - 1) { best_left = vec[k].first - 1; break; } } long long best_right = (long long)-1e18; for (int k=idx_of_school_interval; k < m - 1; k++) { if (vec[k+1].first - 1 != vec[k].second) { best_right = vec[k].second + 1; break; } } if (abs(best_left - s) <= abs(best_right - s)) cout << best_left; else cout << best_right; }
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 <bits/stdc++.h> using namespace std; int main() { long long n; long long m, s; cin >> n >> m >> s; vector<pair<long long, long long>> vec(m); for (int k=0;k<m;k++) { long long a,b; cin >> a >> b; vec[k] = {a, b}; } vec.push_back({-1e18, 0}); vec.push_back({n + 1, 1e18}); m += 2; sort(vec.begin(), vec.end()); long long result = (long long)vec[0].first - 1; int idx_of_school_interval = -1; for (int k=0;k<m+2;k++) { if(vec[k].first <= s && vec[k].second >= s) { idx_of_school_interval = k; break; } } long long best_left = (long long)1e18; for (int k=idx_of_school_interval; k > 0; k--) { if (vec[k-1].second != vec[k].first - 1) { best_left = vec[k].first - 1; break; } } long long best_right = (long long)-1e18; for (int k=idx_of_school_interval; k < m - 1; k++) { if (vec[k+1].first - 1 != vec[k].second) { best_right = vec[k].second + 1; break; } } if (abs(best_left - s) <= abs(best_right - s)) cout << best_left; else cout << best_right; } |