#include <bits/stdc++.h>
typedef long long ll;
#define nd second
#define st first
using namespace std;
int main() {
ios_base::sync_with_stdio(0);
cin.tie(0);
ll n, m, s; cin >> n >> m >> s;
vector<pair<ll, ll>> seg(m);
for (int i = 0; i < m; i++) {
cin >> seg[i].st >> seg[i].nd;
}
ll b = 0;
ll l = -1, r = -1;
bool c = false;
sort(seg.begin(), seg.end());
seg.push_back({n+1, 1e18});
for (auto se: seg) {
if (!c) {
if (b < se.st-1) {
l = se.st-1;
}
b = se.nd;
}
if (se.st <= s && s <= se.nd) {
c = true;
}
if (c) {
if (se.st == r) {
r = -1;
}
if (r != -1) break;
r = se.nd+1;
}
}
if (l == -1) l = -1e18;
if (r == -1) r = 1e18;
if (s-l <= r-s) {
cout << l << '\n';
}
else cout << r << '\n';
}
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 | #include <bits/stdc++.h> typedef long long ll; #define nd second #define st first using namespace std; int main() { ios_base::sync_with_stdio(0); cin.tie(0); ll n, m, s; cin >> n >> m >> s; vector<pair<ll, ll>> seg(m); for (int i = 0; i < m; i++) { cin >> seg[i].st >> seg[i].nd; } ll b = 0; ll l = -1, r = -1; bool c = false; sort(seg.begin(), seg.end()); seg.push_back({n+1, 1e18}); for (auto se: seg) { if (!c) { if (b < se.st-1) { l = se.st-1; } b = se.nd; } if (se.st <= s && s <= se.nd) { c = true; } if (c) { if (se.st == r) { r = -1; } if (r != -1) break; r = se.nd+1; } } if (l == -1) l = -1e18; if (r == -1) r = 1e18; if (s-l <= r-s) { cout << l << '\n'; } else cout << r << '\n'; } |
English