#include <iostream> #include <algorithm> struct range { int64_t v; int t; bool operator<(const range &b) const { if (v == b.v) return t > b.t; return v < b.v; } }; const int MAX = 1000 + 2; int64_t n, m, s, l, r, p ,d; range R[4 * MAX]; int main() { std::ios_base::sync_with_stdio(0); std::cin >> n >> m >> s; for (int i = 0; i < m; ++i) { std::cin >> l >> r; R[4 * i] = {l, +1}; R[4 * i + 1] = {r, -1}; R[4 * i + 2] = {l-1, 0}; R[4 * i + 3] = {r+1, 0}; } std::sort(R, R + m * 4); int x = 0; for (int i=0;i<m*4;++i) { x += R[i].t; if (R[i].v >= 1 && R[i].v <= n && x == 0 && R[i].t == 0) { if (p == 0 || std::abs(s-R[i].v) < d) { d = std::abs(s-R[i].v); p = R[i].v; } } } std::cout << p << 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 | #include <iostream> #include <algorithm> struct range { int64_t v; int t; bool operator<(const range &b) const { if (v == b.v) return t > b.t; return v < b.v; } }; const int MAX = 1000 + 2; int64_t n, m, s, l, r, p ,d; range R[4 * MAX]; int main() { std::ios_base::sync_with_stdio(0); std::cin >> n >> m >> s; for (int i = 0; i < m; ++i) { std::cin >> l >> r; R[4 * i] = {l, +1}; R[4 * i + 1] = {r, -1}; R[4 * i + 2] = {l-1, 0}; R[4 * i + 3] = {r+1, 0}; } std::sort(R, R + m * 4); int x = 0; for (int i=0;i<m*4;++i) { x += R[i].t; if (R[i].v >= 1 && R[i].v <= n && x == 0 && R[i].t == 0) { if (p == 0 || std::abs(s-R[i].v) < d) { d = std::abs(s-R[i].v); p = R[i].v; } } } std::cout << p << std::endl; return 0; } |