#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; } |