#include<iostream> #include<vector> #include<algorithm> using namespace std; int main() { long long n; int m; long long s; cin >> n >> m >> s; vector<pair<long long, long long> > przedzialy; for (int i = 0; i < m; i++) { long long li, ri; cin >> li >> ri; przedzialy.push_back(make_pair(li, ri)); } sort(przedzialy.begin(), przedzialy.end()); int index = 0; while (przedzialy[index].second < s) { index++; } int index_lewy = index; int index_prawy = index; while (index_lewy >= 1 && przedzialy[index_lewy - 1].second + 1 >= przedzialy[index_lewy].first) { index_lewy--; } while (index_prawy < m - 1 && przedzialy[index_prawy + 1].first - 1 <= przedzialy[index_prawy].second) { index_prawy++; } long long lewy = przedzialy[index_lewy].first - 1; long long prawy = przedzialy[index_prawy].second + 1; if (lewy == 0) { cout << prawy; return 0; } if (prawy > n) { cout << lewy; return 0; } if (lewy > s || prawy < s) { return 0; } long long dist_lewy = s - lewy; long long dist_prawy = prawy - s; if (dist_prawy < dist_lewy) { cout << prawy; } else { cout << lewy; } }
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 | #include<iostream> #include<vector> #include<algorithm> using namespace std; int main() { long long n; int m; long long s; cin >> n >> m >> s; vector<pair<long long, long long> > przedzialy; for (int i = 0; i < m; i++) { long long li, ri; cin >> li >> ri; przedzialy.push_back(make_pair(li, ri)); } sort(przedzialy.begin(), przedzialy.end()); int index = 0; while (przedzialy[index].second < s) { index++; } int index_lewy = index; int index_prawy = index; while (index_lewy >= 1 && przedzialy[index_lewy - 1].second + 1 >= przedzialy[index_lewy].first) { index_lewy--; } while (index_prawy < m - 1 && przedzialy[index_prawy + 1].first - 1 <= przedzialy[index_prawy].second) { index_prawy++; } long long lewy = przedzialy[index_lewy].first - 1; long long prawy = przedzialy[index_prawy].second + 1; if (lewy == 0) { cout << prawy; return 0; } if (prawy > n) { cout << lewy; return 0; } if (lewy > s || prawy < s) { return 0; } long long dist_lewy = s - lewy; long long dist_prawy = prawy - s; if (dist_prawy < dist_lewy) { cout << prawy; } else { cout << lewy; } } |