#include <bits/stdc++.h>
using namespace std;
int main()
{
ios_base::sync_with_stdio(0);
cin.tie(NULL);
long long n, m, s;
cin >> n >> m >> s;
vector<pair<long long, long long>> prz(m);
for (int i = 0; i < m; i++)
{
cin >> prz[i].first >> prz[i].second;
}
prz.push_back({0, 0});
sort(prz.begin(), prz.end());
prz.push_back({n + 1, n + 1});
long long sprz;
for (int i = 0; i < prz.size(); i++)
{
if (prz[i].first <= s && s <= prz[i].second)
{
sprz = i;
}
}
long long leftres = -3 * n - 2;
long long rightres = 3 * n + 2;
for (int i = sprz - 1; i >= 0; i--)
{
if (prz[i + 1].first - prz[i].second > 1)
{
leftres = prz[i + 1].first - 1;
break;
}
}
for (int i = sprz + 1; i < prz.size(); i++)
{
if (prz[i].first - prz[i - 1].second > 1)
{
rightres = prz[i - 1].second + 1;
break;
}
}
if (rightres - s < s - leftres)
{
cout << rightres;
}
else
{
cout << leftres;
}
}
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 | #include <bits/stdc++.h> using namespace std; int main() { ios_base::sync_with_stdio(0); cin.tie(NULL); long long n, m, s; cin >> n >> m >> s; vector<pair<long long, long long>> prz(m); for (int i = 0; i < m; i++) { cin >> prz[i].first >> prz[i].second; } prz.push_back({0, 0}); sort(prz.begin(), prz.end()); prz.push_back({n + 1, n + 1}); long long sprz; for (int i = 0; i < prz.size(); i++) { if (prz[i].first <= s && s <= prz[i].second) { sprz = i; } } long long leftres = -3 * n - 2; long long rightres = 3 * n + 2; for (int i = sprz - 1; i >= 0; i--) { if (prz[i + 1].first - prz[i].second > 1) { leftres = prz[i + 1].first - 1; break; } } for (int i = sprz + 1; i < prz.size(); i++) { if (prz[i].first - prz[i - 1].second > 1) { rightres = prz[i - 1].second + 1; break; } } if (rightres - s < s - leftres) { cout << rightres; } else { cout << leftres; } } |
English