#include <bits/stdc++.h>
#define ll long long
#define ve vector
#define fi first
#define se second
#define ld long double
#define all(x) x.begin(), x.end()
using namespace std;
typedef pair<int, int> pii;
void solve()
{
ll n, m, s;
cin >> n >> m >> s;
ve<pair<ll, ll> >v(m);
for(auto& i : v)
cin >> i.fi >> i.se;;
sort(all(v));
ll res = -1;
auto upd = [&](ll x){
if(res == -1 || abs(res - s) > abs(x - s) || (abs(res - s) == abs(x - s) && x < res))
res = x;
};
auto upd2 = [&](ll l, ll r){
if(r < l)
return;
if(s >= l && s <= r)
res = s;
upd(l);
upd(r);
};
upd2(1, v[0].fi - 1);
for(int i = 1; i < m; i++){
upd2(v[i - 1].se + 1, v[i].fi-1);
}
upd2(v.back().se+1, n);
cout << res << "\n";
}
signed main()
{
ios_base::sync_with_stdio(0);
cin.tie(0);
int T = 1;
// cin >> T;
while (T--)
solve();
}
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 | #include <bits/stdc++.h> #define ll long long #define ve vector #define fi first #define se second #define ld long double #define all(x) x.begin(), x.end() using namespace std; typedef pair<int, int> pii; void solve() { ll n, m, s; cin >> n >> m >> s; ve<pair<ll, ll> >v(m); for(auto& i : v) cin >> i.fi >> i.se;; sort(all(v)); ll res = -1; auto upd = [&](ll x){ if(res == -1 || abs(res - s) > abs(x - s) || (abs(res - s) == abs(x - s) && x < res)) res = x; }; auto upd2 = [&](ll l, ll r){ if(r < l) return; if(s >= l && s <= r) res = s; upd(l); upd(r); }; upd2(1, v[0].fi - 1); for(int i = 1; i < m; i++){ upd2(v[i - 1].se + 1, v[i].fi-1); } upd2(v.back().se+1, n); cout << res << "\n"; } signed main() { ios_base::sync_with_stdio(0); cin.tie(0); int T = 1; // cin >> T; while (T--) solve(); } |
English