#include<bits/stdc++.h>
#define llong long long
#define ldouble long double
#define uint unsigned int
#define ulong unsigned long long
using namespace std;
void solve() {
llong n, s;
int m;
cin >> n >> m >> s;
vector<llong> l(m), r(m);
bool s_in = false;
for (int i = 0; i < m; i++) {
cin >> l[i] >> r[i];
if (l[i] <= s && s <= r[i]) s_in = true;
}
if (!s_in) {
l.push_back(s); r.push_back(s);
}
vector<int> perm(m);
if (!s_in) perm.push_back(m);
iota(perm.begin(), perm.end(), 0);
sort(perm.begin(), perm.end(), [&](int i, int j) {
return r[i] < r[j];
});
vector<llong> lp, rp;
llong lc = l[perm[0]], rc = r[perm[0]];
for (int i : perm) {
if (l[i] > rc + 1) {
lp.push_back(lc);
rp.push_back(rc);
lc = l[i];
rc = r[i];
}
else rc = r[i];
}
lp.push_back(lc);
rp.push_back(rc);
llong ans;
for (int i = 0; i < lp.size(); i++) {
if (lp[i] <= s && s <= rp[i]) {
if (lp[i] == 1) ans = rp[i] + 1;
else if (rp[i] == n) ans = lp[i] - 1;
else ans = s - lp[i] <= rp[i] - s ? lp[i] - 1 : rp[i] + 1;
break;
}
}
cout << ans << "\n";
}
int main() {
ios_base::sync_with_stdio(false);
cin.tie(nullptr); cout.tie(nullptr);
solve();
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 67 68 | #include<bits/stdc++.h> #define llong long long #define ldouble long double #define uint unsigned int #define ulong unsigned long long using namespace std; void solve() { llong n, s; int m; cin >> n >> m >> s; vector<llong> l(m), r(m); bool s_in = false; for (int i = 0; i < m; i++) { cin >> l[i] >> r[i]; if (l[i] <= s && s <= r[i]) s_in = true; } if (!s_in) { l.push_back(s); r.push_back(s); } vector<int> perm(m); if (!s_in) perm.push_back(m); iota(perm.begin(), perm.end(), 0); sort(perm.begin(), perm.end(), [&](int i, int j) { return r[i] < r[j]; }); vector<llong> lp, rp; llong lc = l[perm[0]], rc = r[perm[0]]; for (int i : perm) { if (l[i] > rc + 1) { lp.push_back(lc); rp.push_back(rc); lc = l[i]; rc = r[i]; } else rc = r[i]; } lp.push_back(lc); rp.push_back(rc); llong ans; for (int i = 0; i < lp.size(); i++) { if (lp[i] <= s && s <= rp[i]) { if (lp[i] == 1) ans = rp[i] + 1; else if (rp[i] == n) ans = lp[i] - 1; else ans = s - lp[i] <= rp[i] - s ? lp[i] - 1 : rp[i] + 1; break; } } cout << ans << "\n"; } int main() { ios_base::sync_with_stdio(false); cin.tie(nullptr); cout.tie(nullptr); solve(); return 0; } |
English