#include <algorithm> #include <vector> #include <iostream> using namespace std; typedef long long ll; int main() { ios_base::sync_with_stdio(false); ll a, b, n, m, s; cin >> n >> m >> s; vector<pair<ll, ll> > taken_intervals; for (int i = 0; i < m; i++) { cin >> a >> b; taken_intervals.emplace_back(a, b); } ranges::sort(taken_intervals); vector<pair<ll, ll> > free_intervals; ll prev = 1; for (const auto &[fst, snd]: taken_intervals) { if (fst - 1 >= prev) { free_intervals.emplace_back(prev, fst - 1); } prev = snd + 1; } if (prev <= n) { free_intervals.emplace_back(prev, n); } ll result_min = n + 1; ll result = -1; for (const auto &[fst, snd]: free_intervals) { if (const ll begin_distance = abs(fst - s); begin_distance < result_min) { result_min = begin_distance; result = fst; } if (ll end_distance = abs(snd - s); end_distance < result_min) { result_min = end_distance; result = snd; } } cout << result << 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 40 41 42 43 44 45 46 47 48 49 50 | #include <algorithm> #include <vector> #include <iostream> using namespace std; typedef long long ll; int main() { ios_base::sync_with_stdio(false); ll a, b, n, m, s; cin >> n >> m >> s; vector<pair<ll, ll> > taken_intervals; for (int i = 0; i < m; i++) { cin >> a >> b; taken_intervals.emplace_back(a, b); } ranges::sort(taken_intervals); vector<pair<ll, ll> > free_intervals; ll prev = 1; for (const auto &[fst, snd]: taken_intervals) { if (fst - 1 >= prev) { free_intervals.emplace_back(prev, fst - 1); } prev = snd + 1; } if (prev <= n) { free_intervals.emplace_back(prev, n); } ll result_min = n + 1; ll result = -1; for (const auto &[fst, snd]: free_intervals) { if (const ll begin_distance = abs(fst - s); begin_distance < result_min) { result_min = begin_distance; result = fst; } if (ll end_distance = abs(snd - s); end_distance < result_min) { result_min = end_distance; result = snd; } } cout << result << endl; return 0; } |