#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define pll pair<long long, long long>
constexpr int maxm = 1e3 + 7;
vector<pll> intervals;
ll m,t1,t2,n,s;
ll LEFT_ANS, RIGHT_ANS;
int main(){
cin>>n>>m>>s;
LEFT_ANS = 0;
RIGHT_ANS = 0;
for(int i = 0 ; i < m; i++){
cin>>t1>>t2;
intervals.push_back({t1,t2});
}
bool switch_side = 0;
sort(intervals.begin(), intervals.end());
for(int i = 0; i < m; i++){
//auto interv = intervals[i];
//
// cerr<<intervals[i].first<<" "<<intervals[i].second<<endl;
if(intervals[i].first <= s && s <= intervals[i].second){
//cerr<<"ZNALAZLEM \n";
// cerr<<intervals[i].first<<" "<<intervals[i].second<<endl;
for(int j = i ; j < m; j++){
if(j == m-1){
RIGHT_ANS = intervals[j].second + 1ll;
break;
}
if(intervals[j].second + 1ll!= intervals[j+1].first){
RIGHT_ANS = intervals[j].second + 1ll;
break;
}
}
for(int j = i ; j >= 0; j--){
if(j == 0){
LEFT_ANS = intervals[j].first - 1ll;
break;
}
if(intervals[j].first != intervals[j-1].second + 1ll){
LEFT_ANS = intervals[j].first - 1ll;
break;
}
}
}
}
if(LEFT_ANS == 0){
LEFT_ANS = -1e12 - 7;
}
if(RIGHT_ANS == n+1){
RIGHT_ANS = 1e12 + 7;
}
// cerr<<" L "<<LEFT_ANS<<endl;
// cerr<<" r "<<RIGHT_ANS<<endl;
if(s - LEFT_ANS < RIGHT_ANS - s){
cout<<LEFT_ANS<<endl;
}else if(s - LEFT_ANS > RIGHT_ANS - s){
cout<<RIGHT_ANS<<endl;
}else{
cout<<LEFT_ANS<<endl;
}
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 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 68 69 | #include <bits/stdc++.h> using namespace std; #define ll long long #define pll pair<long long, long long> constexpr int maxm = 1e3 + 7; vector<pll> intervals; ll m,t1,t2,n,s; ll LEFT_ANS, RIGHT_ANS; int main(){ cin>>n>>m>>s; LEFT_ANS = 0; RIGHT_ANS = 0; for(int i = 0 ; i < m; i++){ cin>>t1>>t2; intervals.push_back({t1,t2}); } bool switch_side = 0; sort(intervals.begin(), intervals.end()); for(int i = 0; i < m; i++){ //auto interv = intervals[i]; // // cerr<<intervals[i].first<<" "<<intervals[i].second<<endl; if(intervals[i].first <= s && s <= intervals[i].second){ //cerr<<"ZNALAZLEM \n"; // cerr<<intervals[i].first<<" "<<intervals[i].second<<endl; for(int j = i ; j < m; j++){ if(j == m-1){ RIGHT_ANS = intervals[j].second + 1ll; break; } if(intervals[j].second + 1ll!= intervals[j+1].first){ RIGHT_ANS = intervals[j].second + 1ll; break; } } for(int j = i ; j >= 0; j--){ if(j == 0){ LEFT_ANS = intervals[j].first - 1ll; break; } if(intervals[j].first != intervals[j-1].second + 1ll){ LEFT_ANS = intervals[j].first - 1ll; break; } } } } if(LEFT_ANS == 0){ LEFT_ANS = -1e12 - 7; } if(RIGHT_ANS == n+1){ RIGHT_ANS = 1e12 + 7; } // cerr<<" L "<<LEFT_ANS<<endl; // cerr<<" r "<<RIGHT_ANS<<endl; if(s - LEFT_ANS < RIGHT_ANS - s){ cout<<LEFT_ANS<<endl; }else if(s - LEFT_ANS > RIGHT_ANS - s){ cout<<RIGHT_ANS<<endl; }else{ cout<<LEFT_ANS<<endl; } return 0; } |
English