#include <iostream>
#include <vector>
#include <climits>
#include <algorithm>
using namespace std;
int main()
{
ios_base::sync_with_stdio(0);
cin.tie(0);
long long n, m, s,l,r;
cin >> n >> m >> s;
vector<pair<long long, long long>> prz;
int idx=-1;
for (int i = 0; i < m; i++)
{
cin >> l >> r;
prz.push_back({ l,r });
}
sort(prz.begin(), prz.end());
for (int i=0;i<m;i++)
if (prz[i].first <= s and s <= prz[i].second)
idx = i;
long long mini = LLONG_MAX;
long long odp;
int tera = idx;
while (true)
{
if (tera == m - 1)
{
if (prz[tera].second != n)
{
mini = abs(s - prz[tera].second - 1);
odp = prz[tera].second + 1;
}
break;
}
if (prz[tera].second + 1 != prz[tera + 1].first)
{
mini= abs(s - prz[tera].second - 1);
odp = prz[tera].second + 1;
break;
}
tera++;
}
tera = idx;
while (true)
{
if (tera == 0)
{
if (prz[tera].first != 1)
if (abs(s - prz[tera].first + 1) <= mini)
odp = prz[tera].first - 1;
break;
}
if (prz[tera].first - 1 != prz[tera - 1].second)
{
if (abs(s - prz[tera].first + 1) <= mini)
odp = prz[tera].first - 1;
break;
}
tera--;
}
cout << odp;
}
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 55 56 57 58 59 60 61 62 63 64 | #include <iostream> #include <vector> #include <climits> #include <algorithm> using namespace std; int main() { ios_base::sync_with_stdio(0); cin.tie(0); long long n, m, s,l,r; cin >> n >> m >> s; vector<pair<long long, long long>> prz; int idx=-1; for (int i = 0; i < m; i++) { cin >> l >> r; prz.push_back({ l,r }); } sort(prz.begin(), prz.end()); for (int i=0;i<m;i++) if (prz[i].first <= s and s <= prz[i].second) idx = i; long long mini = LLONG_MAX; long long odp; int tera = idx; while (true) { if (tera == m - 1) { if (prz[tera].second != n) { mini = abs(s - prz[tera].second - 1); odp = prz[tera].second + 1; } break; } if (prz[tera].second + 1 != prz[tera + 1].first) { mini= abs(s - prz[tera].second - 1); odp = prz[tera].second + 1; break; } tera++; } tera = idx; while (true) { if (tera == 0) { if (prz[tera].first != 1) if (abs(s - prz[tera].first + 1) <= mini) odp = prz[tera].first - 1; break; } if (prz[tera].first - 1 != prz[tera - 1].second) { if (abs(s - prz[tera].first + 1) <= mini) odp = prz[tera].first - 1; break; } tera--; } cout << odp; } |
English