#include <bits/stdc++.h> #define ll long long #define fors(u, n, s) for(ll u = (s); u < (n); u++) #define foru(u, n) fors(u, n, 0) #define f first #define s second #define vec vector #define pb push_back #define ir(a, b, x) (((a) <= (x)) && ((x) <= (b))) using namespace std; vec<pair<ll, ll>> segments; ll n, s; int main() { cin >> n; int m; cin >> m; cin >> s; foru(_i, m){ ll x, y; cin >> x >> y; segments.pb({x, y}); } ll right = s+1; ll left = s-1; foru(_i, m) foru(i, m){ auto seg = segments[i]; if(ir(seg.f, seg.s, right)) right = seg.s+1; if(ir(seg.f, seg.s, left)) left = seg.f-1; } if(left <= 0) { cout << right; return 0; } if(right > n){ cout << left; return 0; } if(right-s >= s-left) swap(right, left); cout << right; 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 | #include <bits/stdc++.h> #define ll long long #define fors(u, n, s) for(ll u = (s); u < (n); u++) #define foru(u, n) fors(u, n, 0) #define f first #define s second #define vec vector #define pb push_back #define ir(a, b, x) (((a) <= (x)) && ((x) <= (b))) using namespace std; vec<pair<ll, ll>> segments; ll n, s; int main() { cin >> n; int m; cin >> m; cin >> s; foru(_i, m){ ll x, y; cin >> x >> y; segments.pb({x, y}); } ll right = s+1; ll left = s-1; foru(_i, m) foru(i, m){ auto seg = segments[i]; if(ir(seg.f, seg.s, right)) right = seg.s+1; if(ir(seg.f, seg.s, left)) left = seg.f-1; } if(left <= 0) { cout << right; return 0; } if(right > n){ cout << left; return 0; } if(right-s >= s-left) swap(right, left); cout << right; return 0; } |