#include <bits/stdc++.h>
using namespace std;
#define ll long long
const ll maxm = 1007;
ll n,m,s;
pair<ll, ll> rans[maxm];
int main() {
cin >> n >> m >> s;
for ( ll i = 0; i<m; i++ ) {
cin >> rans[i].first >> rans[i].second;
}
sort(rans, rans + m);
// for (int i = 0; i<m; i++) {
// cout << rans[i].first << ", " << rans[i].second << "\n";
// }
ll fi=-1;
vector<pair<ll,ll> > freerans;
if (rans[0].first > 1) {
freerans.push_back(make_pair(1, rans[0].first-1));
}
for (ll i = 0; i<m; i++) {
ll donleft = 0;
if (i!=0) {
donleft = rans[i].first - rans[i-1].second - 1;
}
if (donleft > 0) {
// cout << donleft << " - left \n";
freerans.push_back(make_pair(rans[i-1].second+1, rans[i].first-1));
}
}
if (rans[m-1].second < n) {
freerans.push_back(make_pair(rans[m-1].second+1, n));
}
ll value = 2*n;
ll buildingNumber = -1;
for (auto fr : freerans) {
// cout << fr.first << ", " << fr.second << "\n";
ll leftDistance = abs(fr.first - s);
ll rightDistance = abs(fr.second - s);
if (leftDistance < value) {
buildingNumber = fr.first;
value = leftDistance;
}
if (rightDistance < value) {
buildingNumber = fr.second;
value = rightDistance;
}
}
cout << buildingNumber << "\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 49 50 51 52 53 54 | #include <bits/stdc++.h> using namespace std; #define ll long long const ll maxm = 1007; ll n,m,s; pair<ll, ll> rans[maxm]; int main() { cin >> n >> m >> s; for ( ll i = 0; i<m; i++ ) { cin >> rans[i].first >> rans[i].second; } sort(rans, rans + m); // for (int i = 0; i<m; i++) { // cout << rans[i].first << ", " << rans[i].second << "\n"; // } ll fi=-1; vector<pair<ll,ll> > freerans; if (rans[0].first > 1) { freerans.push_back(make_pair(1, rans[0].first-1)); } for (ll i = 0; i<m; i++) { ll donleft = 0; if (i!=0) { donleft = rans[i].first - rans[i-1].second - 1; } if (donleft > 0) { // cout << donleft << " - left \n"; freerans.push_back(make_pair(rans[i-1].second+1, rans[i].first-1)); } } if (rans[m-1].second < n) { freerans.push_back(make_pair(rans[m-1].second+1, n)); } ll value = 2*n; ll buildingNumber = -1; for (auto fr : freerans) { // cout << fr.first << ", " << fr.second << "\n"; ll leftDistance = abs(fr.first - s); ll rightDistance = abs(fr.second - s); if (leftDistance < value) { buildingNumber = fr.first; value = leftDistance; } if (rightDistance < value) { buildingNumber = fr.second; value = rightDistance; } } cout << buildingNumber << "\n"; } |
English