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