#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
long long n, s;
int m;
cin >> n >> m >> s;
vector<pair<long long, long long>> intervals(m);
for (int i = 0; i < m; i++) {
cin >> intervals[i].first >> intervals[i].second;
}
sort(intervals.begin(), intervals.end());
long long before = -1;
long long last = -1;
for (long long i = 0; i < m; i++) {
long long candidate = intervals[i].first - 1;
// cout << "[" << intervals[i].first << "," << intervals[i].second << "] candidate = " << candidate << " last=" << last << " before=" << before << "\n";
if (candidate >= s) {
if (last < s - 1) {
before = s - 1;
}
break;
}
if (candidate > last) {
before = candidate;
}
last = intervals[i].second;
}
long long after = n + 1;
last = n + 1;
for (long long i = m - 1; i >= 0; i--) {
long long candidate = intervals[i].second + 1;
// cout << "[" << intervals[i].first << "," << intervals[i].second << "] candidate = " << candidate << " last=" << last << " after=" << after << "\n";
if (candidate <= s) {
if (last > s + 1) {
after = s + 1;
}
break;
}
if (candidate < last) {
after = candidate;
}
last = intervals[i].first;
}
// cout << "after=" << after << " before=" << before << " s=" << s << "\n";
if (before < 1) {
cout << after;
} else if (after > n) {
cout << before;
} else if (s - before <= after - s) {
cout << before;
} else {
cout << after;
}
// cout << "\n";
}
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 | #include <iostream> #include <vector> #include <algorithm> using namespace std; int main() { ios::sync_with_stdio(false); cin.tie(nullptr); long long n, s; int m; cin >> n >> m >> s; vector<pair<long long, long long>> intervals(m); for (int i = 0; i < m; i++) { cin >> intervals[i].first >> intervals[i].second; } sort(intervals.begin(), intervals.end()); long long before = -1; long long last = -1; for (long long i = 0; i < m; i++) { long long candidate = intervals[i].first - 1; // cout << "[" << intervals[i].first << "," << intervals[i].second << "] candidate = " << candidate << " last=" << last << " before=" << before << "\n"; if (candidate >= s) { if (last < s - 1) { before = s - 1; } break; } if (candidate > last) { before = candidate; } last = intervals[i].second; } long long after = n + 1; last = n + 1; for (long long i = m - 1; i >= 0; i--) { long long candidate = intervals[i].second + 1; // cout << "[" << intervals[i].first << "," << intervals[i].second << "] candidate = " << candidate << " last=" << last << " after=" << after << "\n"; if (candidate <= s) { if (last > s + 1) { after = s + 1; } break; } if (candidate < last) { after = candidate; } last = intervals[i].first; } // cout << "after=" << after << " before=" << before << " s=" << s << "\n"; if (before < 1) { cout << after; } else if (after > n) { cout << before; } else if (s - before <= after - s) { cout << before; } else { cout << after; } // cout << "\n"; } |
English