#include <bits/stdc++.h> #define fi first #define se second typedef long long ll; using namespace std; ll cal(ll a, ll b) { ll ans = a - b; if (ans < 0) return -ans; return ans; } int main() { cin.tie(0); cout.tie(0); ios_base::sync_with_stdio(false); vector<pair<ll, ll>> li; ll n, m, s, l, r; cin >> n >> m >> s; for (int i = 0; i < m; ++i) { cin >> l >> r; li.push_back({ l, r }); } li.push_back({ 0, 0 }); //li.push_back({ s, s }); li.push_back({ n + 1, n + 1 }); sort(li.begin(), li.end()); ll ans = (LLONG_MAX - 1) / 3, resp = 0; for (int i = 1; i < li.size() - 1; ++i) { if (li[i - 1].se + 1 < li[i].fi && ans > cal(li[i].fi - 1, s)) { ans = cal(li[i].fi - 1, s); resp = li[i].fi - 1; } if (li[i].se + 1 < li[i + 1].fi && ans > cal(li[i].se + 1, s)) { ans = cal(li[i].se + 1, s); resp = li[i].se + 1; } /*if (li[i - 1].se <= s && s <= li[i].fi) { if (li[i - 1].se < s - 1) { ans = 1; resp = s - 1; } if (s + 1 < li[i].fi && ans != 1) { ans = 1; resp = s + 1; } }*/ } cout << resp << '\n'; 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 69 70 71 | #include <bits/stdc++.h> #define fi first #define se second typedef long long ll; using namespace std; ll cal(ll a, ll b) { ll ans = a - b; if (ans < 0) return -ans; return ans; } int main() { cin.tie(0); cout.tie(0); ios_base::sync_with_stdio(false); vector<pair<ll, ll>> li; ll n, m, s, l, r; cin >> n >> m >> s; for (int i = 0; i < m; ++i) { cin >> l >> r; li.push_back({ l, r }); } li.push_back({ 0, 0 }); //li.push_back({ s, s }); li.push_back({ n + 1, n + 1 }); sort(li.begin(), li.end()); ll ans = (LLONG_MAX - 1) / 3, resp = 0; for (int i = 1; i < li.size() - 1; ++i) { if (li[i - 1].se + 1 < li[i].fi && ans > cal(li[i].fi - 1, s)) { ans = cal(li[i].fi - 1, s); resp = li[i].fi - 1; } if (li[i].se + 1 < li[i + 1].fi && ans > cal(li[i].se + 1, s)) { ans = cal(li[i].se + 1, s); resp = li[i].se + 1; } /*if (li[i - 1].se <= s && s <= li[i].fi) { if (li[i - 1].se < s - 1) { ans = 1; resp = s - 1; } if (s + 1 < li[i].fi && ans != 1) { ans = 1; resp = s + 1; } }*/ } cout << resp << '\n'; return 0; } |