#include <bits/stdc++.h> #define FOR(i, a, b) for(int i = (a); i <= (b); ++i) #define RFOR(i, a, b) for(int i = (a); i >= (b); --i) #define in insert #define pb push_back #define f first #define s second #define ll long long #define ull unsigned long long #define V vector #define S set #define eb emplace_back #define P pair #define MS multiset #define BS bitset using namespace std; void solve() { ll n, m, k; cin >> n >> m >> k; vector<pair<ll, ll>> pr(1), pr2(1); bool tf = false; FOR(i, 1, m) { ll a, b; cin >> a >> b; if(k >= a && k <= b) tf = true; pr.pb({a, b}); } if(tf == false) pr.pb({k, k}); sort(pr.begin(), pr.end()); ll pop = pr[1].f; FOR(i, 2, pr.size() - 1) { if(pr[i - 1].s != pr[i].f - 1) { pr2.pb({pop, pr[i - 1].s}); pop = pr[i].f; } } pr2.pb({pop, pr[m].s}); sort(pr2.begin(), pr2.end()); ll res = LONG_LONG_MAX, wyn = 0; FOR(i, 1, pr2.size() - 1) { ll akt1 = pr2[i].f - 1; ll akt2 = pr2[i].s + 1; if(akt1 > 0) { if(abs(akt1 - k) < res) { res = abs(akt1 - k); wyn = akt1; } } if(akt2 <= n) { if(abs(akt2 - k) < res) { res = abs(akt2 - k); wyn = akt2; } } } cout << wyn; } int main() { ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); solve(); 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 | #include <bits/stdc++.h> #define FOR(i, a, b) for(int i = (a); i <= (b); ++i) #define RFOR(i, a, b) for(int i = (a); i >= (b); --i) #define in insert #define pb push_back #define f first #define s second #define ll long long #define ull unsigned long long #define V vector #define S set #define eb emplace_back #define P pair #define MS multiset #define BS bitset using namespace std; void solve() { ll n, m, k; cin >> n >> m >> k; vector<pair<ll, ll>> pr(1), pr2(1); bool tf = false; FOR(i, 1, m) { ll a, b; cin >> a >> b; if(k >= a && k <= b) tf = true; pr.pb({a, b}); } if(tf == false) pr.pb({k, k}); sort(pr.begin(), pr.end()); ll pop = pr[1].f; FOR(i, 2, pr.size() - 1) { if(pr[i - 1].s != pr[i].f - 1) { pr2.pb({pop, pr[i - 1].s}); pop = pr[i].f; } } pr2.pb({pop, pr[m].s}); sort(pr2.begin(), pr2.end()); ll res = LONG_LONG_MAX, wyn = 0; FOR(i, 1, pr2.size() - 1) { ll akt1 = pr2[i].f - 1; ll akt2 = pr2[i].s + 1; if(akt1 > 0) { if(abs(akt1 - k) < res) { res = abs(akt1 - k); wyn = akt1; } } if(akt2 <= n) { if(abs(akt2 - k) < res) { res = abs(akt2 - k); wyn = akt2; } } } cout << wyn; } int main() { ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); solve(); return 0; } |