#include <bits/stdc++.h>
#define st first
#define sc second
using namespace std;
typedef long long ll;
ll N, M, S;
vector< pair< ll, ll > > vec;
int main(){
ios_base::sync_with_stdio(0); cin.tie(0);
cin >> N >> M >> S;
bool ok = 0;
for(int i = 0; i < M; i++){
ll l, r;
cin >> l >> r;
vec.push_back({l, r});
if( S >= l && S <= r) ok = 1;
}
vec.push_back({0,0});
vec.push_back({N+1, N+1});
M+=2;
if(!ok){ vec.push_back({S, S}); M++; }
sort(vec.begin(), vec.end());
ll x;
for(int i = 0; i < M; i++){
if( S >= vec[i].st && S <= vec[i].sc ){
x = i;
break;
}
}
ll odp1 = -1;
for(int i = x+1; i < M; i++){
if( vec[i-1].sc+1 < vec[i].st ){
odp1 = vec[i-1].sc+1;
break;
}
}
ll odp2 = -1;
for(int i = x-1; i >= 0; i--){
if( vec[i].sc < vec[i+1].st-1 ){
odp2 = vec[i+1].st-1;
break;
}
}
if(odp1 == -1){ cout << odp2; }
else if(odp2 == -1){ cout << odp1; }
else if(odp1-S < S-odp2){ cout << odp1; }
else{ cout << odp2; }
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 | #include <bits/stdc++.h> #define st first #define sc second using namespace std; typedef long long ll; ll N, M, S; vector< pair< ll, ll > > vec; int main(){ ios_base::sync_with_stdio(0); cin.tie(0); cin >> N >> M >> S; bool ok = 0; for(int i = 0; i < M; i++){ ll l, r; cin >> l >> r; vec.push_back({l, r}); if( S >= l && S <= r) ok = 1; } vec.push_back({0,0}); vec.push_back({N+1, N+1}); M+=2; if(!ok){ vec.push_back({S, S}); M++; } sort(vec.begin(), vec.end()); ll x; for(int i = 0; i < M; i++){ if( S >= vec[i].st && S <= vec[i].sc ){ x = i; break; } } ll odp1 = -1; for(int i = x+1; i < M; i++){ if( vec[i-1].sc+1 < vec[i].st ){ odp1 = vec[i-1].sc+1; break; } } ll odp2 = -1; for(int i = x-1; i >= 0; i--){ if( vec[i].sc < vec[i+1].st-1 ){ odp2 = vec[i+1].st-1; break; } } if(odp1 == -1){ cout << odp2; } else if(odp2 == -1){ cout << odp1; } else if(odp1-S < S-odp2){ cout << odp1; } else{ cout << odp2; } return 0; } |
English