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