#include <bits/stdc++.h>
using namespace std;
vector <pair<long long, long long> >tab;
int main(){
long long n,m,s;
long long a,b;
int gdzie_szkola = -1;
long long wynik = 1e18+9;
long long dist = 1e18+9;
cin >> n >> m >> s;
tab.push_back({0,0});
tab.push_back({n+1,n+1});
for (int i = 0; i<m; i++){
cin >> a >> b;
tab.push_back({a,b});
}
sort(tab.begin() ,tab.end());
for (int i = 0; i<m+2; i++){
a=tab[i].first;
b=tab[i].second;
if ( s >= a && s <= b){
gdzie_szkola = i;
}
}
for ( int i = gdzie_szkola; i >= 1 ; i--){
if (tab[i].first - 1 != tab[i-1].second && ( llabs(tab[i].first - 1 - s ) < dist ) ){
dist = llabs(tab[i].first - 1 - s );
wynik = tab[i].first - 1;
break;
}
}
for ( int i = gdzie_szkola; i < m + 1; i++){
if (tab[i].second + 1 != tab[i+1].first && ( llabs(tab[i].second + 1 - s) < dist ) ){
dist = llabs(tab[i].second + 1 - s);
wynik = tab[i].second + 1;
break;
}
}
// if ( tab[0].first > 1 && llabs( s - (tab[0].first - 1) ) <= dist ){
// dist = llabs( s - (tab[0].first - 1) );
// wynik = tab[0].first - 1;
// }
// else if ( tab[m-1].second < n && llabs( s - (tab[m-1].second + 1 ) ) < dist ){
// dist = llabs( s - (tab[m-1].second + 1 ) );
// wynik = tab[m-1].second + 1;
// }
cout << wynik << '\n';
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 | #include <bits/stdc++.h> using namespace std; vector <pair<long long, long long> >tab; int main(){ long long n,m,s; long long a,b; int gdzie_szkola = -1; long long wynik = 1e18+9; long long dist = 1e18+9; cin >> n >> m >> s; tab.push_back({0,0}); tab.push_back({n+1,n+1}); for (int i = 0; i<m; i++){ cin >> a >> b; tab.push_back({a,b}); } sort(tab.begin() ,tab.end()); for (int i = 0; i<m+2; i++){ a=tab[i].first; b=tab[i].second; if ( s >= a && s <= b){ gdzie_szkola = i; } } for ( int i = gdzie_szkola; i >= 1 ; i--){ if (tab[i].first - 1 != tab[i-1].second && ( llabs(tab[i].first - 1 - s ) < dist ) ){ dist = llabs(tab[i].first - 1 - s ); wynik = tab[i].first - 1; break; } } for ( int i = gdzie_szkola; i < m + 1; i++){ if (tab[i].second + 1 != tab[i+1].first && ( llabs(tab[i].second + 1 - s) < dist ) ){ dist = llabs(tab[i].second + 1 - s); wynik = tab[i].second + 1; break; } } // if ( tab[0].first > 1 && llabs( s - (tab[0].first - 1) ) <= dist ){ // dist = llabs( s - (tab[0].first - 1) ); // wynik = tab[0].first - 1; // } // else if ( tab[m-1].second < n && llabs( s - (tab[m-1].second + 1 ) ) < dist ){ // dist = llabs( s - (tab[m-1].second + 1 ) ); // wynik = tab[m-1].second + 1; // } cout << wynik << '\n'; return 0; } |
English