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