#include <iostream> #include <vector> #include <algorithm> using namespace std; typedef long long ll; int main() { ll n, m, s; cin >> n >> m >> s; vector<pair<ll, ll>> przed(m); for (int y = 0; y < m; y++) { cin >> przed[y].first >> przed[y].second; } sort(przed.begin(), przed.end()); ll l = -1, r = -1; for (auto &y : przed) { if (y.first <= s and s <= y.second) { l = y.first; r = y.second; break; } } vector<ll> result; if (przed[0].first > 1) { if ((przed[0].first - 1) < l) { result.push_back(przed[0].first - 1); } else if (1 > r) { result.push_back(1); } } for (int y = 1; y < m; y++) { ll popkon = przed[y-1].second; ll start = przed[y].first; if (start > popkon + 1) { if ((start - 1) < l) { result.push_back(start - 1); } else if ((popkon + 1) > r) { result.push_back(popkon + 1); } } } ll popkon = przed.back().second; if (popkon < n) { if (n < l) { result.push_back(n); } else if ((popkon + 1) > r) { result.push_back(popkon + 1); } } ll mini = 1e18+7; ll best = -1; for (ll y : result) { ll dist = abs(y - s); if (dist < mini) { mini = dist; best = y; } else if (dist == mini and y < best) { best = y; } } cout << best; 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 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 | #include <iostream> #include <vector> #include <algorithm> using namespace std; typedef long long ll; int main() { ll n, m, s; cin >> n >> m >> s; vector<pair<ll, ll>> przed(m); for (int y = 0; y < m; y++) { cin >> przed[y].first >> przed[y].second; } sort(przed.begin(), przed.end()); ll l = -1, r = -1; for (auto &y : przed) { if (y.first <= s and s <= y.second) { l = y.first; r = y.second; break; } } vector<ll> result; if (przed[0].first > 1) { if ((przed[0].first - 1) < l) { result.push_back(przed[0].first - 1); } else if (1 > r) { result.push_back(1); } } for (int y = 1; y < m; y++) { ll popkon = przed[y-1].second; ll start = przed[y].first; if (start > popkon + 1) { if ((start - 1) < l) { result.push_back(start - 1); } else if ((popkon + 1) > r) { result.push_back(popkon + 1); } } } ll popkon = przed.back().second; if (popkon < n) { if (n < l) { result.push_back(n); } else if ((popkon + 1) > r) { result.push_back(popkon + 1); } } ll mini = 1e18+7; ll best = -1; for (ll y : result) { ll dist = abs(y - s); if (dist < mini) { mini = dist; best = y; } else if (dist == mini and y < best) { best = y; } } cout << best; return 0; } |