#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; } |
English