#include <bits/stdc++.h> using namespace std; long long int n, m, s, a, b, wyn, akt, akt2, jedn, osta, k; vector<pair<long long int, long long int>> pary; int main() { ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); cin >> n >> m >> s; for(int i = 0; i < m; i++) { cin >> a >> b; pary.push_back({a, b}); } pary.push_back({0, 0}); pary.push_back({n+1, n+1}); sort(pary.begin(), pary.end()); wyn = 1e15; k = 0; for(int i = 0; i < m+1; i++) { if(k + 1 < pary[i+1].first) // jesli juz ten przedzial w ogole sie nie zawiera np. 9 i 11 { akt = (k +1) - s; akt2 = (pary[i+1].first-1) - s; if(akt < 0){akt *= -1;} if(akt2 < 0){akt2 *= -1;} if(akt2 < akt) { jedn = pary[i+1].first -1; akt = akt2; } else { jedn = k+1; } if((k < s) && (pary[i+1].first > s)) { if(s - 1 != k) { jedn = s-1; akt =1; } else if(s + 1 != pary[i+1].first) { jedn = s + 1; akt = 1; } } if(wyn > akt) { wyn = akt; osta = jedn; } k = pary[i+1].second; //cout << " tutaj "; } else { // cout << " nie tu "; k = max(k, pary[i+1].second); } // cout << "i: " << pary[i].first << " " << pary[i].second << " k " << k << endl; } cout << osta; }
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 65 66 | #include <bits/stdc++.h> using namespace std; long long int n, m, s, a, b, wyn, akt, akt2, jedn, osta, k; vector<pair<long long int, long long int>> pary; int main() { ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); cin >> n >> m >> s; for(int i = 0; i < m; i++) { cin >> a >> b; pary.push_back({a, b}); } pary.push_back({0, 0}); pary.push_back({n+1, n+1}); sort(pary.begin(), pary.end()); wyn = 1e15; k = 0; for(int i = 0; i < m+1; i++) { if(k + 1 < pary[i+1].first) // jesli juz ten przedzial w ogole sie nie zawiera np. 9 i 11 { akt = (k +1) - s; akt2 = (pary[i+1].first-1) - s; if(akt < 0){akt *= -1;} if(akt2 < 0){akt2 *= -1;} if(akt2 < akt) { jedn = pary[i+1].first -1; akt = akt2; } else { jedn = k+1; } if((k < s) && (pary[i+1].first > s)) { if(s - 1 != k) { jedn = s-1; akt =1; } else if(s + 1 != pary[i+1].first) { jedn = s + 1; akt = 1; } } if(wyn > akt) { wyn = akt; osta = jedn; } k = pary[i+1].second; //cout << " tutaj "; } else { // cout << " nie tu "; k = max(k, pary[i+1].second); } // cout << "i: " << pary[i].first << " " << pary[i].second << " k " << k << endl; } cout << osta; } |