#include <bits/stdc++.h> using namespace std; #define st first #define nd second #define fast ios::sync_with_stdio(false); cin.tie(0); cout.tie(0) #define int long long void solve() { int n,m,s; cin>>n>>m>>s; vector<pair<int,int>>before; vector<pair<int,int>>after; for(int i =0;i<m;i++){ int a,b; cin>>a>>b; if(a<=s && s<=b){ before.push_back({a,s}); after.push_back({s,b}); continue; } if(a<=s){ before.push_back({a,b}); continue; } after.push_back({a,b}); } if(before.size()==1 && before[0].st==s && s!=1){cout<<s-1<<'\n';return;} if(after.size()==1 && after[0].nd==s && s!=n){cout<<s+1<<'\n';return;} sort(before.begin(),before.end(),greater<>()); sort(after.begin(),after.end()); int best_before = -1; int last=s; for(auto [a,b]:before){ if(b<last-1){best_before=last-1;break;} last=a; } best_before=max(best_before,last-1); int best = n+1; last=s; for(auto [a,b]:after){ if(a>last+1){best=last+1;break;} last=b; } best=min(best,last+1); if(best_before>0 && (s-best_before<=best-s || best>n)){cout<<best_before<<'\n';return;} cout<<best<<'\n'; } int32_t main() { //fast; //int z; //cin>>z; //while (z--) { 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 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 | #include <bits/stdc++.h> using namespace std; #define st first #define nd second #define fast ios::sync_with_stdio(false); cin.tie(0); cout.tie(0) #define int long long void solve() { int n,m,s; cin>>n>>m>>s; vector<pair<int,int>>before; vector<pair<int,int>>after; for(int i =0;i<m;i++){ int a,b; cin>>a>>b; if(a<=s && s<=b){ before.push_back({a,s}); after.push_back({s,b}); continue; } if(a<=s){ before.push_back({a,b}); continue; } after.push_back({a,b}); } if(before.size()==1 && before[0].st==s && s!=1){cout<<s-1<<'\n';return;} if(after.size()==1 && after[0].nd==s && s!=n){cout<<s+1<<'\n';return;} sort(before.begin(),before.end(),greater<>()); sort(after.begin(),after.end()); int best_before = -1; int last=s; for(auto [a,b]:before){ if(b<last-1){best_before=last-1;break;} last=a; } best_before=max(best_before,last-1); int best = n+1; last=s; for(auto [a,b]:after){ if(a>last+1){best=last+1;break;} last=b; } best=min(best,last+1); if(best_before>0 && (s-best_before<=best-s || best>n)){cout<<best_before<<'\n';return;} cout<<best<<'\n'; } int32_t main() { //fast; //int z; //cin>>z; //while (z--) { solve(); //} } |