#include <iostream>
#include <algorithm>
#include <vector>
#include <cstdint>
int main() {
uint64_t n;
int m;
uint64_t s;
std::cin >> n >> m >> s;
std::vector<std::pair<uint64_t, uint64_t>> intervals(m, {0, 0});
for (int i = 0; i < m; ++i) {
uint64_t l;
uint64_t r;
std::cin >> l >> r;
intervals[i] = std::make_pair(l, r);
}
std::sort(intervals.begin(), intervals.end());
uint64_t position = 0;
auto [l, r] = intervals[0];
for (int i = 1; i < m; ++i) {
auto [l1, r1] = intervals[i];
if (l1 != r + 1) {
if (l <= s && s <= r) {
uint64_t distance = n + 1;
if (l != 1) {
position = l - 1;
distance = s - (l - 1);
}
if (r != n && distance > r + 1 - s) {
position = r + 1;
}
break;
}
l = l1;
}
r = r1;
}
if (l <= s && s <= r) {
uint64_t distance = n + 1;
if (l != 1) {
position = l - 1;
distance = s - (l - 1);
}
if (r != n && distance > r + 1 - s) {
position = r + 1;
}
}
std::cout << position << std::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 51 52 53 54 55 56 57 58 59 | #include <iostream> #include <algorithm> #include <vector> #include <cstdint> int main() { uint64_t n; int m; uint64_t s; std::cin >> n >> m >> s; std::vector<std::pair<uint64_t, uint64_t>> intervals(m, {0, 0}); for (int i = 0; i < m; ++i) { uint64_t l; uint64_t r; std::cin >> l >> r; intervals[i] = std::make_pair(l, r); } std::sort(intervals.begin(), intervals.end()); uint64_t position = 0; auto [l, r] = intervals[0]; for (int i = 1; i < m; ++i) { auto [l1, r1] = intervals[i]; if (l1 != r + 1) { if (l <= s && s <= r) { uint64_t distance = n + 1; if (l != 1) { position = l - 1; distance = s - (l - 1); } if (r != n && distance > r + 1 - s) { position = r + 1; } break; } l = l1; } r = r1; } if (l <= s && s <= r) { uint64_t distance = n + 1; if (l != 1) { position = l - 1; distance = s - (l - 1); } if (r != n && distance > r + 1 - s) { position = r + 1; } } std::cout << position << std::endl; return 0; } |
English