#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const ll INF = 1e18;
const int N = 2000;
pair <ll, ll> taken[N];
pair <ll, ll> Free[N];
int main() {
ios_base::sync_with_stdio(0);
cin.tie(0);
ll n, s;
int m;
cin >> n >> m >> s;
for(int i = 0; i < m; i++) {
ll b, e;
cin >> b >> e;
taken[i] = {b, e};
}
sort(taken, taken + m);
int free_size = 0;
for(int i = 0; i < m; i++) {
if(i > 0 && taken[i - 1].second + 1 < taken[i].first)
Free[free_size++] = {taken[i - 1].second + 1, taken[i].first - 1};
else if(i == 0 && taken[i].first > 1)
Free[free_size++] = {1, taken[i].first - 1};
}
if(taken[m - 1].second < n)
Free[free_size++] = {taken[m - 1].second + 1, n};
ll best = INF;
for(int i = 0; i < free_size; i++) {
if(abs(Free[i].first - s) < abs(best - s))
best = Free[i].first;
if(abs(Free[i].second - s) < abs(best - s))
best = Free[i].second;
}
cout << best << "\n";
}
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 <bits/stdc++.h> using namespace std; typedef long long ll; const ll INF = 1e18; const int N = 2000; pair <ll, ll> taken[N]; pair <ll, ll> Free[N]; int main() { ios_base::sync_with_stdio(0); cin.tie(0); ll n, s; int m; cin >> n >> m >> s; for(int i = 0; i < m; i++) { ll b, e; cin >> b >> e; taken[i] = {b, e}; } sort(taken, taken + m); int free_size = 0; for(int i = 0; i < m; i++) { if(i > 0 && taken[i - 1].second + 1 < taken[i].first) Free[free_size++] = {taken[i - 1].second + 1, taken[i].first - 1}; else if(i == 0 && taken[i].first > 1) Free[free_size++] = {1, taken[i].first - 1}; } if(taken[m - 1].second < n) Free[free_size++] = {taken[m - 1].second + 1, n}; ll best = INF; for(int i = 0; i < free_size; i++) { if(abs(Free[i].first - s) < abs(best - s)) best = Free[i].first; if(abs(Free[i].second - s) < abs(best - s)) best = Free[i].second; } cout << best << "\n"; } |
English