#include <iostream>
#include <vector>
#include <algorithm>
int main()
{
std::vector<std::pair<long long, long long>> przedzial = std::vector<std::pair<long long, long long>>();
long long n, m, s;
std::cin >> n >> m >> s;
for (int i = 0; i < m; i++) {
long long a, b;
std::cin >> a >> b;
przedzial.push_back({a,b});
}
std::sort(begin(przedzial), end(przedzial));
long long best_dist = n;
long long cur_closest = 0;
for (int i = 0; i < m; i++) {
if (przedzial[i].first <= s) {
if ((i == 0 && przedzial[i].first > 1) ||
(i > 0 && przedzial[i - 1].second < przedzial[i].first - 1)) { //THERE EMPTY ON THE LEFT
long long dist = s - (przedzial[i].first - 1);
if (best_dist > dist) {
best_dist = dist;
cur_closest = przedzial[i].first - 1;
}
}
}
if (przedzial[i].second >= s) {
if ((i == m - 1 && przedzial[i].second < n) ||
(i < m - 1 && przedzial[i + 1].first > przedzial[i].second + 1) ) {
long long dist = (przedzial[i].second + 1) - s;
if (best_dist > dist) {
best_dist = dist;
cur_closest = przedzial[i].second + 1;
}
}
}
}
std::cout << cur_closest;
}
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 | #include <iostream> #include <vector> #include <algorithm> int main() { std::vector<std::pair<long long, long long>> przedzial = std::vector<std::pair<long long, long long>>(); long long n, m, s; std::cin >> n >> m >> s; for (int i = 0; i < m; i++) { long long a, b; std::cin >> a >> b; przedzial.push_back({a,b}); } std::sort(begin(przedzial), end(przedzial)); long long best_dist = n; long long cur_closest = 0; for (int i = 0; i < m; i++) { if (przedzial[i].first <= s) { if ((i == 0 && przedzial[i].first > 1) || (i > 0 && przedzial[i - 1].second < przedzial[i].first - 1)) { //THERE EMPTY ON THE LEFT long long dist = s - (przedzial[i].first - 1); if (best_dist > dist) { best_dist = dist; cur_closest = przedzial[i].first - 1; } } } if (przedzial[i].second >= s) { if ((i == m - 1 && przedzial[i].second < n) || (i < m - 1 && przedzial[i + 1].first > przedzial[i].second + 1) ) { long long dist = (przedzial[i].second + 1) - s; if (best_dist > dist) { best_dist = dist; cur_closest = przedzial[i].second + 1; } } } } std::cout << cur_closest; } |
English