#include <iostream>
#include <map>
using namespace std;
int m;
long long int l, r, n, s;
map<long long int, long long int> left_for;
map<long long int, long long int> right_for;
long long int saved_range_left, saved_range_right;
int main() {
ios_base::sync_with_stdio(false);
cin.tie(NULL);
cin >> n >> m >> s;
for (int i = 0; i < m; ++i) {
cin >> l >> r;
left_for[r] = l;
right_for[l] = r;
if (l <= s && s <= r) {
saved_range_left = l;
saved_range_right = r;
}
}
--saved_range_left;
++saved_range_right;
while (left_for.find(saved_range_left) != left_for.end())
saved_range_left = left_for.find(saved_range_left)->second - 1;
while (right_for.find(saved_range_right) != right_for.end())
saved_range_right = right_for.find(saved_range_right)->second + 1;
if (saved_range_left < 1) {
cout << saved_range_right << endl;
return 0;
}
if (saved_range_right > n) {
cout << saved_range_left << endl;
return 0;
}
if ((s - saved_range_left) <= (saved_range_right - s)) {
cout << saved_range_left << endl;
return 0;
}
cout << saved_range_right << endl;
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 | #include <iostream> #include <map> using namespace std; int m; long long int l, r, n, s; map<long long int, long long int> left_for; map<long long int, long long int> right_for; long long int saved_range_left, saved_range_right; int main() { ios_base::sync_with_stdio(false); cin.tie(NULL); cin >> n >> m >> s; for (int i = 0; i < m; ++i) { cin >> l >> r; left_for[r] = l; right_for[l] = r; if (l <= s && s <= r) { saved_range_left = l; saved_range_right = r; } } --saved_range_left; ++saved_range_right; while (left_for.find(saved_range_left) != left_for.end()) saved_range_left = left_for.find(saved_range_left)->second - 1; while (right_for.find(saved_range_right) != right_for.end()) saved_range_right = right_for.find(saved_range_right)->second + 1; if (saved_range_left < 1) { cout << saved_range_right << endl; return 0; } if (saved_range_right > n) { cout << saved_range_left << endl; return 0; } if ((s - saved_range_left) <= (saved_range_right - s)) { cout << saved_range_left << endl; return 0; } cout << saved_range_right << endl; return 0; } |
English