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;
}