#include <bits/stdc++.h>
using namespace std;
#define pb push_back
#define fi first
#define sn second
typedef long long ll;
typedef vector<int> VI;
typedef vector<char> VC;
typedef pair<ll, ll> PI;
const ll INF = 1e14;
ll get_right(vector<PI> &A, int i) {
if (i >= A.size()) return INF;
return A[i].fi - 1;
}
int main() {
ll n, s;
int m;
cin >> n >> m >> s;
vector<PI> A(m);
for (int i = 0; i < m; i++) {
cin >> A[i].fi >> A[i].sn;
}
sort(A.begin(), A.end());
ll sol = -INF;
ll d_sol = INF;
ll rightmost = 0;
for (int i = 0; i < m; i++) {
if (A[i].fi == rightmost + 1) {
rightmost = A[i].sn;
continue;
}
ll left = rightmost + 1;
ll right = get_right(A, i);
ll d_left = abs(left - s);
ll d_right = abs(right - s);
if (d_left < d_sol) {
d_sol = d_left;
sol = left;
}
if (d_right < d_sol) {
d_sol = d_right;
sol = right;
}
rightmost = A[i].sn;
}
if (A[m - 1].sn < n) {
ll left = A[m - 1].sn + 1;
ll d_left = abs(left - s);
if (d_left < d_sol) {
d_sol = d_left;
sol = left;
}
}
cout << sol << 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 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 | #include <bits/stdc++.h> using namespace std; #define pb push_back #define fi first #define sn second typedef long long ll; typedef vector<int> VI; typedef vector<char> VC; typedef pair<ll, ll> PI; const ll INF = 1e14; ll get_right(vector<PI> &A, int i) { if (i >= A.size()) return INF; return A[i].fi - 1; } int main() { ll n, s; int m; cin >> n >> m >> s; vector<PI> A(m); for (int i = 0; i < m; i++) { cin >> A[i].fi >> A[i].sn; } sort(A.begin(), A.end()); ll sol = -INF; ll d_sol = INF; ll rightmost = 0; for (int i = 0; i < m; i++) { if (A[i].fi == rightmost + 1) { rightmost = A[i].sn; continue; } ll left = rightmost + 1; ll right = get_right(A, i); ll d_left = abs(left - s); ll d_right = abs(right - s); if (d_left < d_sol) { d_sol = d_left; sol = left; } if (d_right < d_sol) { d_sol = d_right; sol = right; } rightmost = A[i].sn; } if (A[m - 1].sn < n) { ll left = A[m - 1].sn + 1; ll d_left = abs(left - s); if (d_left < d_sol) { d_sol = d_left; sol = left; } } cout << sol << endl; return 0; } |
English