#include <bits/stdc++.h> using std::cin, std::cout; using i32 = int; using u32 = unsigned int; using i64 = long long; using u64 = unsigned long long; const char endl = '\n'; struct seg { i64 l, r; auto operator <=> (const seg &other) const = default; }; int main() { std::ios_base::sync_with_stdio(0); cin.tie(NULL); cout.tie(NULL); i64 n; int m; i64 s; cin >> n >> m >> s; std::vector<seg> segs(m); for (int i = 0; i < m; i++) { cin >> segs[i].l >> segs[i].r; } segs.emplace_back(n + 1, n + 1); std::ranges::sort(segs); i64 best_l = -1; i64 best_r = INT64_MAX; i64 prev_r = 0; for (int i = 0; i < segs.size(); i++) { auto [l, r] = segs[i]; if (prev_r == l - 1) { prev_r = r; continue; } if (l <= s) { if (l - 1 > best_l) best_l = l - 1; } else { if (prev_r + 1 < best_r) best_r = prev_r + 1; } prev_r = r; } if (best_l == -1) cout << best_r; else if (best_r == INT64_MAX) cout << best_l; else { if (s - best_l <= best_r - s) { cout << best_l; } else { cout << best_r; } } 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 | #include <bits/stdc++.h> using std::cin, std::cout; using i32 = int; using u32 = unsigned int; using i64 = long long; using u64 = unsigned long long; const char endl = '\n'; struct seg { i64 l, r; auto operator <=> (const seg &other) const = default; }; int main() { std::ios_base::sync_with_stdio(0); cin.tie(NULL); cout.tie(NULL); i64 n; int m; i64 s; cin >> n >> m >> s; std::vector<seg> segs(m); for (int i = 0; i < m; i++) { cin >> segs[i].l >> segs[i].r; } segs.emplace_back(n + 1, n + 1); std::ranges::sort(segs); i64 best_l = -1; i64 best_r = INT64_MAX; i64 prev_r = 0; for (int i = 0; i < segs.size(); i++) { auto [l, r] = segs[i]; if (prev_r == l - 1) { prev_r = r; continue; } if (l <= s) { if (l - 1 > best_l) best_l = l - 1; } else { if (prev_r + 1 < best_r) best_r = prev_r + 1; } prev_r = r; } if (best_l == -1) cout << best_r; else if (best_r == INT64_MAX) cout << best_l; else { if (s - best_l <= best_r - s) { cout << best_l; } else { cout << best_r; } } return 0; } |