#include <algorithm>
#include <iostream>
#include <vector>
using namespace std;
using LL = long long;
using PLL = pair<LL, LL>;
LL solve(LL n, LL s, vector<PLL>& intervals)
{
sort(intervals.begin(), intervals.end());
vector<PLL> united_intervals;
united_intervals.push_back(intervals[0]);
for (size_t i = 1; i < intervals.size(); ++i)
{
if (intervals[i].first == united_intervals.back().second + 1)
united_intervals.back().second = intervals[i].second;
else
united_intervals.push_back(intervals[i]);
}
for (size_t i = 0; i < united_intervals.size(); ++i)
{
if (s >= united_intervals[i].first && s <= united_intervals[i].second)
{
LL res = united_intervals[i].first - 1;
if (res == 0 || (united_intervals[i].second < n && united_intervals[i].second + 1 - s < s - res))
res = united_intervals[i].second + 1;
return res;
}
}
return -1;
}
int main()
{
LL n, s, l, r;
int m;
cin >> n >> m >> s;
vector<PLL> intervals;
for (int i = 0; i < m; ++i)
{
cin >> l >> r;
intervals.push_back(make_pair(l, r));
}
LL res = solve(n, s, intervals);
cout << res << endl;
return 0;
}
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 | #include <algorithm> #include <iostream> #include <vector> using namespace std; using LL = long long; using PLL = pair<LL, LL>; LL solve(LL n, LL s, vector<PLL>& intervals) { sort(intervals.begin(), intervals.end()); vector<PLL> united_intervals; united_intervals.push_back(intervals[0]); for (size_t i = 1; i < intervals.size(); ++i) { if (intervals[i].first == united_intervals.back().second + 1) united_intervals.back().second = intervals[i].second; else united_intervals.push_back(intervals[i]); } for (size_t i = 0; i < united_intervals.size(); ++i) { if (s >= united_intervals[i].first && s <= united_intervals[i].second) { LL res = united_intervals[i].first - 1; if (res == 0 || (united_intervals[i].second < n && united_intervals[i].second + 1 - s < s - res)) res = united_intervals[i].second + 1; return res; } } return -1; } int main() { LL n, s, l, r; int m; cin >> n >> m >> s; vector<PLL> intervals; for (int i = 0; i < m; ++i) { cin >> l >> r; intervals.push_back(make_pair(l, r)); } LL res = solve(n, s, intervals); cout << res << endl; return 0; } |
English