#include <bits/stdc++.h> #define ll long long using namespace std; vector <ll> pocz; vector<ll> kon; int main() { ios_base::sync_with_stdio(false); long long n, s, p, k; int m,it; cin>>n>>m>>s; for(int i=0; i<m; ++i) { cin>>p>>k; pocz.push_back(p); kon.push_back(k); } ll wd = LLONG_MAX; sort(pocz.begin(), pocz.end()); sort(kon.begin(), kon.end()); for(int i=0; i<m; ++i) { if(s>=pocz[i] && s<=kon[i]) { it = i; break; } } //cout<<wd; int ter = it; while(ter>=0)// w dol { if(pocz[ter]==1) break; if(ter==0) { wd = s - (pocz[ter]-1); break; } if(pocz[ter] - 1 == kon[ter-1]) { ter--; continue; } if(pocz[ter]-1 > kon[ter-1]) { wd = s - (pocz[ter] -1 ); break; } } ll wg = LLONG_MAX; ter = it; while(ter <m) { if(kon[ter] == n) break; if(ter == m-1) { wg = kon[ter] + 1 - s; break; } if(kon[ter]+1 == pocz[ter+1]) { ter++; continue; } if(kon[ter]+1 < pocz[ter+1]) { wg = kon[ter]+1 - s; break; } } if(wg < wd) { cout<<s + wg; return 0; } cout<<s-wd; 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 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 | #include <bits/stdc++.h> #define ll long long using namespace std; vector <ll> pocz; vector<ll> kon; int main() { ios_base::sync_with_stdio(false); long long n, s, p, k; int m,it; cin>>n>>m>>s; for(int i=0; i<m; ++i) { cin>>p>>k; pocz.push_back(p); kon.push_back(k); } ll wd = LLONG_MAX; sort(pocz.begin(), pocz.end()); sort(kon.begin(), kon.end()); for(int i=0; i<m; ++i) { if(s>=pocz[i] && s<=kon[i]) { it = i; break; } } //cout<<wd; int ter = it; while(ter>=0)// w dol { if(pocz[ter]==1) break; if(ter==0) { wd = s - (pocz[ter]-1); break; } if(pocz[ter] - 1 == kon[ter-1]) { ter--; continue; } if(pocz[ter]-1 > kon[ter-1]) { wd = s - (pocz[ter] -1 ); break; } } ll wg = LLONG_MAX; ter = it; while(ter <m) { if(kon[ter] == n) break; if(ter == m-1) { wg = kon[ter] + 1 - s; break; } if(kon[ter]+1 == pocz[ter+1]) { ter++; continue; } if(kon[ter]+1 < pocz[ter+1]) { wg = kon[ter]+1 - s; break; } } if(wg < wd) { cout<<s + wg; return 0; } cout<<s-wd; return 0; } |