#include<iostream> #include<algorithm> #include<cmath> #define ll long long using namespace std; bool war(pair<ll, ll> a, pair<ll, ll> b) { return (a.second<b.second); } ll abs2(ll a) { if(a<0) return -1*a; else return a; } int main() { ios_base::sync_with_stdio(false); cin.tie(0); ll n, m, s; cin >> n >> m >> s; pair<ll, ll> przedzialy[m]; pair<ll, ll> pom={-1,-1}; ll indeks=-1; for(int i=0; i<m; i++) { cin >> przedzialy[i].first >> przedzialy[i].second; if(s<=przedzialy[i].second && s>=przedzialy[i].first) pom = przedzialy[i]; } sort(przedzialy, przedzialy+m, war); for(int i=0; i<m; i++) if(przedzialy[i]==pom) indeks = i; ll min_roznica=1e13, p=-1; for(int i=indeks; i>=0; i--) { if((i>0 && przedzialy[i].first-przedzialy[i-1].second>1) || (przedzialy[i].first>1 && i==0)) { min_roznica = abs2(przedzialy[i].first-1-s); p=przedzialy[i].first-1; break; } } for(int i=indeks; i<m; i++) { if((i<m-1 && przedzialy[i+1].first-przedzialy[i].second>1) || (i==m-1 && przedzialy[i].second+1<=n)) { if(abs2(przedzialy[i].second+1-s)<min_roznica) { p = przedzialy[i].second+1; min_roznica = abs2(p-s); break; } } } cout << p; 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 | #include<iostream> #include<algorithm> #include<cmath> #define ll long long using namespace std; bool war(pair<ll, ll> a, pair<ll, ll> b) { return (a.second<b.second); } ll abs2(ll a) { if(a<0) return -1*a; else return a; } int main() { ios_base::sync_with_stdio(false); cin.tie(0); ll n, m, s; cin >> n >> m >> s; pair<ll, ll> przedzialy[m]; pair<ll, ll> pom={-1,-1}; ll indeks=-1; for(int i=0; i<m; i++) { cin >> przedzialy[i].first >> przedzialy[i].second; if(s<=przedzialy[i].second && s>=przedzialy[i].first) pom = przedzialy[i]; } sort(przedzialy, przedzialy+m, war); for(int i=0; i<m; i++) if(przedzialy[i]==pom) indeks = i; ll min_roznica=1e13, p=-1; for(int i=indeks; i>=0; i--) { if((i>0 && przedzialy[i].first-przedzialy[i-1].second>1) || (przedzialy[i].first>1 && i==0)) { min_roznica = abs2(przedzialy[i].first-1-s); p=przedzialy[i].first-1; break; } } for(int i=indeks; i<m; i++) { if((i<m-1 && przedzialy[i+1].first-przedzialy[i].second>1) || (i==m-1 && przedzialy[i].second+1<=n)) { if(abs2(przedzialy[i].second+1-s)<min_roznica) { p = przedzialy[i].second+1; min_roznica = abs2(p-s); break; } } } cout << p; return 0; } |