#include <bits/stdc++.h>
//#include <cassert>
const int inf = 2e9;
const long long ill = 4e18;
const long long mod = 998244353;
const long double eps = 1e-6;
#define pii pair<int, int>
#define tui tuple<int, int, ll>
typedef long long ll;
typedef long double ld;
using namespace std;
void solve() {
for (int file = 1; file <=1; file++) {
/*string fn = to_string(file);
ifstream cin(fn+".in");*/
ll n, m, s;
cin >> n >> m >> s;
vector<pair<ll, ll>> a(m);
for (ll i = 0; i < m; i++)
cin >> a[i].first >> a[i].second;
ll before = -1, after = -1;
sort(a.begin(), a.end());
for (ll i = 0; i < m; i++) {
if (a[i].first <= s - 1 && s - 1 <= a[i].second)
before = i;
if (a[i].first <= s + 1 && s + 1 <= a[i].second)
after = i;
}
ll res = -ill;
if (before == -1 && s!=1)
res = s - 1;
else if (after == -1 && s!=n)
res = s + 1;
else {
vector<ll> gol;
for (int i = 0; i < m; i++) {
if (!(!i && a[i].first == 1 || i && a[i].first - 1 == a[i - 1].second))
gol.push_back(a[i].first - 1);
if (!(i == m - 1 && a[i].second == n || i != m - 1 && a[i].second + 1 == a[i + 1].first))
gol.push_back(a[i].second + 1);
}
for (ll k : gol)
if (abs(k - s) < abs(res - s))
res = k;
}
/*ifstream ansin(fn + ".out");
ll ans;
ansin >> ans;*/
cout << res << '\n';
/*if (ans != res)
cout << "ERROR at test " << file << ". answer:" << ans << '\n';*/
}
}
signed main() {
ios_base::sync_with_stdio(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 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 | #include <bits/stdc++.h> //#include <cassert> const int inf = 2e9; const long long ill = 4e18; const long long mod = 998244353; const long double eps = 1e-6; #define pii pair<int, int> #define tui tuple<int, int, ll> typedef long long ll; typedef long double ld; using namespace std; void solve() { for (int file = 1; file <=1; file++) { /*string fn = to_string(file); ifstream cin(fn+".in");*/ ll n, m, s; cin >> n >> m >> s; vector<pair<ll, ll>> a(m); for (ll i = 0; i < m; i++) cin >> a[i].first >> a[i].second; ll before = -1, after = -1; sort(a.begin(), a.end()); for (ll i = 0; i < m; i++) { if (a[i].first <= s - 1 && s - 1 <= a[i].second) before = i; if (a[i].first <= s + 1 && s + 1 <= a[i].second) after = i; } ll res = -ill; if (before == -1 && s!=1) res = s - 1; else if (after == -1 && s!=n) res = s + 1; else { vector<ll> gol; for (int i = 0; i < m; i++) { if (!(!i && a[i].first == 1 || i && a[i].first - 1 == a[i - 1].second)) gol.push_back(a[i].first - 1); if (!(i == m - 1 && a[i].second == n || i != m - 1 && a[i].second + 1 == a[i + 1].first)) gol.push_back(a[i].second + 1); } for (ll k : gol) if (abs(k - s) < abs(res - s)) res = k; } /*ifstream ansin(fn + ".out"); ll ans; ansin >> ans;*/ cout << res << '\n'; /*if (ans != res) cout << "ERROR at test " << file << ". answer:" << ans << '\n';*/ } } signed main() { ios_base::sync_with_stdio(0); int t = 1; //cin >> t; while (t--) solve(); } |
English