#include <bits/stdc++.h> using namespace std; constexpr int MAX_M = 1e3; long long n, s; int m; pair<long long, long long> seg[MAX_M + 2]; long long dist(long long p) { return llabs(s - p); } int main() { ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); cin >> n >> m >> s; for(int i = 1; i <= m; i++) { cin >> seg[i].first >> seg[i].second; } seg[0] = {0, 0}; seg[m + 1] = {n + 1, n + 1}; sort(seg + 1, seg + 1 + m); long long ans = LLONG_MAX, best = -1; for(int i = 1; i <= m; i++) { if(seg[i - 1].second < seg[i].first - 1LL) { long long d = dist(seg[i].first - 1LL); if(d < ans) { ans = d; best = seg[i].first - 1LL; } } if(seg[i].second + 1LL < seg[i + 1].first) { long long d = dist(seg[i].second + 1LL); if(d < ans) { ans = d; best = seg[i].second + 1LL; } } } cout << best; }
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 | #include <bits/stdc++.h> using namespace std; constexpr int MAX_M = 1e3; long long n, s; int m; pair<long long, long long> seg[MAX_M + 2]; long long dist(long long p) { return llabs(s - p); } int main() { ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); cin >> n >> m >> s; for(int i = 1; i <= m; i++) { cin >> seg[i].first >> seg[i].second; } seg[0] = {0, 0}; seg[m + 1] = {n + 1, n + 1}; sort(seg + 1, seg + 1 + m); long long ans = LLONG_MAX, best = -1; for(int i = 1; i <= m; i++) { if(seg[i - 1].second < seg[i].first - 1LL) { long long d = dist(seg[i].first - 1LL); if(d < ans) { ans = d; best = seg[i].first - 1LL; } } if(seg[i].second + 1LL < seg[i + 1].first) { long long d = dist(seg[i].second + 1LL); if(d < ans) { ans = d; best = seg[i].second + 1LL; } } } cout << best; } |