#include <bits/stdc++.h> using namespace std; int main() { ios_base::sync_with_stdio(0); cin.tie(0); long long n, m, s; cin >> n >> m >> s; vector<pair<long long, long long>> zajete(m); for (long long i = 0; i < m; i++) { cin >> zajete[i].first >> zajete[i].second; } sort(zajete.begin(), zajete.end()); vector<pair<long long, long long>> wolne; if (zajete[0].first > 1) { wolne.push_back({1, zajete[0].first - 1}); } for (long long i = 1; i < m; i++) { if (zajete[i - 1].second + 1 <= zajete[i].first - 1) { wolne.push_back({zajete[i - 1].second + 1, zajete[i].first - 1}); } } if (zajete[m - 1].second < n) { wolne.push_back({zajete[m - 1].second + 1, n}); } long long wynik = -1, odleglosc = n + 1; for (pair<long long, long long> przedzial : wolne) { long long kandydat = (s > przedzial.second) ? przedzial.second : przedzial.first; long long nowa = (s - kandydat < 0) ? -(s - kandydat) : (s - kandydat); if (nowa < odleglosc || (nowa == odleglosc && kandydat < wynik)) { wynik = kandydat; odleglosc = nowa; } } cout << wynik << '\n'; }
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 | #include <bits/stdc++.h> using namespace std; int main() { ios_base::sync_with_stdio(0); cin.tie(0); long long n, m, s; cin >> n >> m >> s; vector<pair<long long, long long>> zajete(m); for (long long i = 0; i < m; i++) { cin >> zajete[i].first >> zajete[i].second; } sort(zajete.begin(), zajete.end()); vector<pair<long long, long long>> wolne; if (zajete[0].first > 1) { wolne.push_back({1, zajete[0].first - 1}); } for (long long i = 1; i < m; i++) { if (zajete[i - 1].second + 1 <= zajete[i].first - 1) { wolne.push_back({zajete[i - 1].second + 1, zajete[i].first - 1}); } } if (zajete[m - 1].second < n) { wolne.push_back({zajete[m - 1].second + 1, n}); } long long wynik = -1, odleglosc = n + 1; for (pair<long long, long long> przedzial : wolne) { long long kandydat = (s > przedzial.second) ? przedzial.second : przedzial.first; long long nowa = (s - kandydat < 0) ? -(s - kandydat) : (s - kandydat); if (nowa < odleglosc || (nowa == odleglosc && kandydat < wynik)) { wynik = kandydat; odleglosc = nowa; } } cout << wynik << '\n'; } |