#include <iostream>
#include <algorithm>
using namespace std;
pair<long long, long long> intervals[1002];
long long n, m, s;
int main() {
cin >> n >> m >> s;
for (int i = 1; i <= m; i++) {
long long l, r;
cin >> l >> r;
intervals[i] = {l, r};
}
sort(intervals, intervals + m + 1);
long long prev_free = 0;
long long next_free = n + 1;
pair<long, long> prev_interval = {0, 0};
for (auto interval : intervals) {
if (interval.first - 1 > prev_interval.second) {
prev_free = interval.first - 1;
}
if (s >= interval.first && s <= interval.second) {
break;
}
prev_interval = interval;
}
prev_interval = {n + 1, n + 1};
for (int i = m; i >= 1; i--) {
auto interval = intervals[i];
if (interval.second + 1 < prev_interval.first) {
next_free = interval.second + 1;
}
if (s >= interval.first && s <= interval.second) {
break;
}
prev_interval = interval;
}
long long score = n;
long long best_idx = 0;
if (prev_free > 0) {
score = s - prev_free;
best_idx = prev_free;
}
if (next_free < n + 1) {
if (next_free - s < score) {
score = next_free - s;
best_idx = next_free;
}
}
cout << best_idx << 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 | #include <iostream> #include <algorithm> using namespace std; pair<long long, long long> intervals[1002]; long long n, m, s; int main() { cin >> n >> m >> s; for (int i = 1; i <= m; i++) { long long l, r; cin >> l >> r; intervals[i] = {l, r}; } sort(intervals, intervals + m + 1); long long prev_free = 0; long long next_free = n + 1; pair<long, long> prev_interval = {0, 0}; for (auto interval : intervals) { if (interval.first - 1 > prev_interval.second) { prev_free = interval.first - 1; } if (s >= interval.first && s <= interval.second) { break; } prev_interval = interval; } prev_interval = {n + 1, n + 1}; for (int i = m; i >= 1; i--) { auto interval = intervals[i]; if (interval.second + 1 < prev_interval.first) { next_free = interval.second + 1; } if (s >= interval.first && s <= interval.second) { break; } prev_interval = interval; } long long score = n; long long best_idx = 0; if (prev_free > 0) { score = s - prev_free; best_idx = prev_free; } if (next_free < n + 1) { if (next_free - s < score) { score = next_free - s; best_idx = next_free; } } cout << best_idx << endl; return 0; } |
English