#pragma GCC optimize("O3,unroll-loops") #include <bits/stdc++.h> #define fi first #define se second #define pn printf("\n") #define ssize(x) int(x.size()) #define all(x) x.begin(),x.end() #define rall(x) x.rbegin(),x.rend() #define bitcount(x) __builtin_popcount(x) #define bitcountll(x) __builtin_popcountll(x) #define clz(x) __builtin_clz(x) #define ctz(x) __builtin_ctz(x) #define eb emplace_back //~ #define r(x) resize(x) //~ #define rf(x, c) resize(x, c) using namespace std; typedef long long ll; typedef pair<int, int> pii; typedef pair<int, ll> pil; typedef pair<ll, int> pli; typedef pair<ll, ll> pll; typedef double db; typedef long double ldb; #define V vector //~ void read(int &a){ //~ a = 0; char c = _getchar_nolock(); //~ while(c<'0'||'9'<c) c = _getchar_nolock(); //~ while('0'<=c&&c<='9') a = a*10+c-'0', c = _getchar_nolock(); //~ } // random_device rd; // mt19937 rng(rd()); // uniform_int_distribution<int> mrandint(1, (1<<30)-1); // uniform_int_distribution<ll> mrandll(1, 1ll<<60); // int randint(){ return mrandint(rng); } // ll randll(){ return mrandll(rng); } int inf = 2.1e09; ll infll = 2e18; int mod = (1<<23)*119+1; //1e09+7; int add(int a, int b){return a+b >= mod ? a+b - mod : a+b;} int sub(int a, int b){return a-b < 0 ? a-b + mod : a-b;} int mul(int a, int b){return int(a * ll(b) % mod);} int fpow(int a, ll b){ int ret = 1; while(b){ if(b & 1) ret = mul(ret, a); b >>= 1, a = mul(a, a); } return ret; } int inv(int a){ return fpow(a, mod-2); } int coeff(int n, int k, vector<int> &fac, vector<int> &invfac){ if(k < 0 || n < k) return 0; return mul(fac[n], mul(invfac[n-k], invfac[k])); } void calcfac(int n, vector<int> &fac, vector<int> &invfac){ fac[0] = 1, invfac[0] = 1; for(int i = 1; i <= n; ++i) fac[i] = mul(fac[i-1], i); invfac[n] = inv(fac[n]); for(int i = n-1; i; --i) invfac[i] = mul(invfac[i+1], i+1); } void answer(){ ll n, s; int m; scanf("%lld%d%lld", &n, &m, &s); V<pll> t(m); unordered_map<ll, int> mp; mp[0] = 1, mp[n+1] = 1; for(int i = 0; i < m; ++i){ scanf("%lld%lld", &t[i].fi, &t[i].se); mp[t[i].fi] = 1, mp[t[i].se] = 1; } ll result = infll, idx = infll; for(int i = 0; i < m; ++i){ if(!mp[t[i].fi-1] && abs(t[i].fi-1-s) < result) result = abs(t[i].fi-1-s), idx = t[i].fi-1; else if(!mp[t[i].fi-1] && abs(t[i].fi-1-s) == result) idx = min(idx, t[i].fi-1); if(!mp[t[i].se+1] && abs(t[i].se+1-s) < result) result = abs(t[i].se+1-s), idx = t[i].se+1; else if(!mp[t[i].se+1] && abs(t[i].se+1-s) == result) idx = min(idx, t[i].se+1); } printf("%lld\n", idx); } int main(){ int T = 1; // scanf("%d", &T); //ios_base::sync_with_stdio(0); cin.tie(0);// cin >> T; for(++T; --T; ) answer(); 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 81 82 83 84 85 86 | #pragma GCC optimize("O3,unroll-loops") #include <bits/stdc++.h> #define fi first #define se second #define pn printf("\n") #define ssize(x) int(x.size()) #define all(x) x.begin(),x.end() #define rall(x) x.rbegin(),x.rend() #define bitcount(x) __builtin_popcount(x) #define bitcountll(x) __builtin_popcountll(x) #define clz(x) __builtin_clz(x) #define ctz(x) __builtin_ctz(x) #define eb emplace_back //~ #define r(x) resize(x) //~ #define rf(x, c) resize(x, c) using namespace std; typedef long long ll; typedef pair<int, int> pii; typedef pair<int, ll> pil; typedef pair<ll, int> pli; typedef pair<ll, ll> pll; typedef double db; typedef long double ldb; #define V vector //~ void read(int &a){ //~ a = 0; char c = _getchar_nolock(); //~ while(c<'0'||'9'<c) c = _getchar_nolock(); //~ while('0'<=c&&c<='9') a = a*10+c-'0', c = _getchar_nolock(); //~ } // random_device rd; // mt19937 rng(rd()); // uniform_int_distribution<int> mrandint(1, (1<<30)-1); // uniform_int_distribution<ll> mrandll(1, 1ll<<60); // int randint(){ return mrandint(rng); } // ll randll(){ return mrandll(rng); } int inf = 2.1e09; ll infll = 2e18; int mod = (1<<23)*119+1; //1e09+7; int add(int a, int b){return a+b >= mod ? a+b - mod : a+b;} int sub(int a, int b){return a-b < 0 ? a-b + mod : a-b;} int mul(int a, int b){return int(a * ll(b) % mod);} int fpow(int a, ll b){ int ret = 1; while(b){ if(b & 1) ret = mul(ret, a); b >>= 1, a = mul(a, a); } return ret; } int inv(int a){ return fpow(a, mod-2); } int coeff(int n, int k, vector<int> &fac, vector<int> &invfac){ if(k < 0 || n < k) return 0; return mul(fac[n], mul(invfac[n-k], invfac[k])); } void calcfac(int n, vector<int> &fac, vector<int> &invfac){ fac[0] = 1, invfac[0] = 1; for(int i = 1; i <= n; ++i) fac[i] = mul(fac[i-1], i); invfac[n] = inv(fac[n]); for(int i = n-1; i; --i) invfac[i] = mul(invfac[i+1], i+1); } void answer(){ ll n, s; int m; scanf("%lld%d%lld", &n, &m, &s); V<pll> t(m); unordered_map<ll, int> mp; mp[0] = 1, mp[n+1] = 1; for(int i = 0; i < m; ++i){ scanf("%lld%lld", &t[i].fi, &t[i].se); mp[t[i].fi] = 1, mp[t[i].se] = 1; } ll result = infll, idx = infll; for(int i = 0; i < m; ++i){ if(!mp[t[i].fi-1] && abs(t[i].fi-1-s) < result) result = abs(t[i].fi-1-s), idx = t[i].fi-1; else if(!mp[t[i].fi-1] && abs(t[i].fi-1-s) == result) idx = min(idx, t[i].fi-1); if(!mp[t[i].se+1] && abs(t[i].se+1-s) < result) result = abs(t[i].se+1-s), idx = t[i].se+1; else if(!mp[t[i].se+1] && abs(t[i].se+1-s) == result) idx = min(idx, t[i].se+1); } printf("%lld\n", idx); } int main(){ int T = 1; // scanf("%d", &T); //ios_base::sync_with_stdio(0); cin.tie(0);// cin >> T; for(++T; --T; ) answer(); return 0; } |