#include <bits/stdc++.h>
long long n, s, r;
int m;
struct interval {
long long a;
long long b;
inline bool operator<(interval &i) {return a<i.a;}
};
std::vector<interval> v, nv;
int main() {
scanf("%lld%d%lld", &n, &m, &s);
for (int i=0; i<m; ++i) {
long long a, b;
scanf("%lld%lld", &a, &b);
v.push_back({a, b});
}
std::sort(v.begin(), v.end());
// for (int i=0; i^v.size(); ++i) {printf("DEBUG: v[%d]={%lld, %lld}\n", i, v[i].a, v[i].b);}
long long a=v[0].a, b=v[0].b;
for (interval* it=&v[1]; it<=&v[v.size()-1]; ++it) {
if (b+1==it->a) {
b = it->b;
} else {
nv.push_back({a, b});
a = it->a;
b = it->b;
}
}
nv.push_back({a, b});
// printf("DEBUG: nv.size()=%d\n", (int)nv.size());
for (auto it=nv.begin(); it!=nv.end(); ++it) {
// printf("DEBUG: nv {%lld, %lld}\n", it->a, it->b);
if ((it->a<=s)&&(it->b>=s)) {
a = (it->a==1)?LLONG_MAX:it->a;
b = (it->b==n)?LLONG_MAX:it->b;
if (std::abs(s-b)>=std::abs(s-a)) {
r = a-1;
} else {
r = b+1;
}
break;
}
}
printf("%lld\n", 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 | #include <bits/stdc++.h> long long n, s, r; int m; struct interval { long long a; long long b; inline bool operator<(interval &i) {return a<i.a;} }; std::vector<interval> v, nv; int main() { scanf("%lld%d%lld", &n, &m, &s); for (int i=0; i<m; ++i) { long long a, b; scanf("%lld%lld", &a, &b); v.push_back({a, b}); } std::sort(v.begin(), v.end()); // for (int i=0; i^v.size(); ++i) {printf("DEBUG: v[%d]={%lld, %lld}\n", i, v[i].a, v[i].b);} long long a=v[0].a, b=v[0].b; for (interval* it=&v[1]; it<=&v[v.size()-1]; ++it) { if (b+1==it->a) { b = it->b; } else { nv.push_back({a, b}); a = it->a; b = it->b; } } nv.push_back({a, b}); // printf("DEBUG: nv.size()=%d\n", (int)nv.size()); for (auto it=nv.begin(); it!=nv.end(); ++it) { // printf("DEBUG: nv {%lld, %lld}\n", it->a, it->b); if ((it->a<=s)&&(it->b>=s)) { a = (it->a==1)?LLONG_MAX:it->a; b = (it->b==n)?LLONG_MAX:it->b; if (std::abs(s-b)>=std::abs(s-a)) { r = a-1; } else { r = b+1; } break; } } printf("%lld\n", r); return 0; } |
English