#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef pair<ll,ll> pll;
int main(){
cin.tie(0)->sync_with_stdio(0);
ll n,m,s;
cin >> n >> m >> s;
vector<pll> segments;
for(int i=0; i<m; ++i){
ll l,r;
cin >> l >> r;
segments.push_back({l,r});
}
sort(segments.begin(),segments.end());
vector<pll> merged_segments;
merged_segments.push_back(segments.front());
for(int i=1; i<m; ++i){
if(segments[i].first == merged_segments.back().second+1)
merged_segments.back().second = segments[i].second;
else
merged_segments.push_back(segments[i]);
}
for(auto &[l,r] : merged_segments){
if(l<=s && s<=r){
if(l==1)
cout << r+1;
else if(r==n)
cout << l-1;
else if(abs(s-l) <= abs(s-r))
cout << l-1;
else
cout << r+1;
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 | #include <bits/stdc++.h> using namespace std; typedef long long ll; typedef pair<ll,ll> pll; int main(){ cin.tie(0)->sync_with_stdio(0); ll n,m,s; cin >> n >> m >> s; vector<pll> segments; for(int i=0; i<m; ++i){ ll l,r; cin >> l >> r; segments.push_back({l,r}); } sort(segments.begin(),segments.end()); vector<pll> merged_segments; merged_segments.push_back(segments.front()); for(int i=1; i<m; ++i){ if(segments[i].first == merged_segments.back().second+1) merged_segments.back().second = segments[i].second; else merged_segments.push_back(segments[i]); } for(auto &[l,r] : merged_segments){ if(l<=s && s<=r){ if(l==1) cout << r+1; else if(r==n) cout << l-1; else if(abs(s-l) <= abs(s-r)) cout << l-1; else cout << r+1; return 0; } } } |
English