// // main.cpp // Szkoła // // Created by dzmitry kavaliou on 11/03/2025. // #include <iostream> #include <tuple> #include <vector> #include <algorithm> #include <cmath> using namespace std; int main(int argc, const char * argv[]) { unsigned long long int a, b, c, bestl=1000000000000, bestr=0; cin >> a >> b >> c; vector<pair<unsigned long long int, unsigned long long>> doit1(b); for(int i = 0; i < b; i++){ cin >> doit1[i].first >> doit1[i].second; } sort(doit1.begin(), doit1.end()); for(int i = 0; i < b; i++){ unsigned long long int l = doit1[i].first, r = doit1[i].second; if(c <= r && c >= l){ if(r<a){ bestr = r+1; } else bestr = 100000000000000; } else if(bestr >= l){ if(r<a){ bestr = max(r+1, bestr); } else bestr = 100000000000000; } } for(int i = b-1; i > -1; i--){ unsigned long long int l = doit1[i].first, r = doit1[i].second; if(c <= r && c >= l){ if(l>1){ bestl = l-1; } else bestl = 100000000000000; } else if(bestl <= r){ if(l>1){ bestl = min(l-1, bestl); } else bestl = 100000000000000; } } if(c-bestl <= bestr-c) cout << bestl << endl; else cout << bestr << 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 | // // main.cpp // Szkoła // // Created by dzmitry kavaliou on 11/03/2025. // #include <iostream> #include <tuple> #include <vector> #include <algorithm> #include <cmath> using namespace std; int main(int argc, const char * argv[]) { unsigned long long int a, b, c, bestl=1000000000000, bestr=0; cin >> a >> b >> c; vector<pair<unsigned long long int, unsigned long long>> doit1(b); for(int i = 0; i < b; i++){ cin >> doit1[i].first >> doit1[i].second; } sort(doit1.begin(), doit1.end()); for(int i = 0; i < b; i++){ unsigned long long int l = doit1[i].first, r = doit1[i].second; if(c <= r && c >= l){ if(r<a){ bestr = r+1; } else bestr = 100000000000000; } else if(bestr >= l){ if(r<a){ bestr = max(r+1, bestr); } else bestr = 100000000000000; } } for(int i = b-1; i > -1; i--){ unsigned long long int l = doit1[i].first, r = doit1[i].second; if(c <= r && c >= l){ if(l>1){ bestl = l-1; } else bestl = 100000000000000; } else if(bestl <= r){ if(l>1){ bestl = min(l-1, bestl); } else bestl = 100000000000000; } } if(c-bestl <= bestr-c) cout << bestl << endl; else cout << bestr << endl; return 0; } |