#include<bits/stdc++.h>
using namespace std;
void solve() {
long long n, s;
int m;
cin >> n >> m >> s;
vector<pair<long long, long long>> segm(m);
for (int i = 0; i < m; i++) {
cin >> segm[i].first >> segm[i].second;
}
segm.push_back({0, 0});
segm.push_back({n + 1, n + 1});
sort(segm.begin(), segm.end());
long long dist = LLONG_MAX;
long long ans = -1;
for (int i = 1; i < segm.size(); i++) {
long long l = segm[i - 1].second + 1, r = segm[i].first - 1;
if (l <= r) {
if (s < l && abs(s - l) < dist) {
dist = abs(s - l);
ans = l;
} else if (abs(s - r) < dist) {
dist = abs(s - r);
ans = r;
}
}
}
cout << ans << "\n";
}
int main() {
ios_base::sync_with_stdio(false);
cin.tie(nullptr);
solve();
}
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 | #include<bits/stdc++.h> using namespace std; void solve() { long long n, s; int m; cin >> n >> m >> s; vector<pair<long long, long long>> segm(m); for (int i = 0; i < m; i++) { cin >> segm[i].first >> segm[i].second; } segm.push_back({0, 0}); segm.push_back({n + 1, n + 1}); sort(segm.begin(), segm.end()); long long dist = LLONG_MAX; long long ans = -1; for (int i = 1; i < segm.size(); i++) { long long l = segm[i - 1].second + 1, r = segm[i].first - 1; if (l <= r) { if (s < l && abs(s - l) < dist) { dist = abs(s - l); ans = l; } else if (abs(s - r) < dist) { dist = abs(s - r); ans = r; } } } cout << ans << "\n"; } int main() { ios_base::sync_with_stdio(false); cin.tie(nullptr); solve(); } |
English