#include <iostream> #include <algorithm> #include <map> using namespace std; #define int long long bool cmp(pair<int,int>a, pair<int,int>b){ return a.second<b.second; } signed main(){ int n,m,s; cin>>n>>m>>s; pair<int,int>in[m+2]; for(int i=1; m>=i; i++){ cin>>in[i].first>>in[i].second; } in[m+1] = {0,0}; sort(in+1,in+m+1,cmp); // for(auto x : in){ // cout<<x.first<<" "<<x.second<<endl; // }cout<<endl; int res = 1e18; int odp = -1; for(int i=1; m>=i; i++){ if(in[i].first-1 > in[i-1].second and in[i].first != 1){ if(abs(s-(in[i].first-1)) < res){ //cout<<in[i].first<<" "<<in[i].second<<endl; res = abs(s-(in[i].first-1)); odp = in[i].first-1; //cout<<res<<" "<<odp<<endl<<endl; } } if(in[i].second+1<in[i+1].first){ //cout<<"post "<<in[i].first<<" "<<in[i].second<<endl; if(abs(s-(in[i].second+1)) < res and in[i].second != n){ //cout<<"post "<<in[i].first<<" "<<in[i].second<<endl; res = abs(s-(in[i].second+1)); odp = in[i].second+1; //cout<<res<<" "<<odp<<endl<<endl; } } } if(in[m].second != n){ if(abs(s-(in[m].second+1)) < res){ res = abs(s-(in[m].second+1)); odp = in[m].second+1; } } cout<<odp; // cout<<odp<<" "<<res; }
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 | #include <iostream> #include <algorithm> #include <map> using namespace std; #define int long long bool cmp(pair<int,int>a, pair<int,int>b){ return a.second<b.second; } signed main(){ int n,m,s; cin>>n>>m>>s; pair<int,int>in[m+2]; for(int i=1; m>=i; i++){ cin>>in[i].first>>in[i].second; } in[m+1] = {0,0}; sort(in+1,in+m+1,cmp); // for(auto x : in){ // cout<<x.first<<" "<<x.second<<endl; // }cout<<endl; int res = 1e18; int odp = -1; for(int i=1; m>=i; i++){ if(in[i].first-1 > in[i-1].second and in[i].first != 1){ if(abs(s-(in[i].first-1)) < res){ //cout<<in[i].first<<" "<<in[i].second<<endl; res = abs(s-(in[i].first-1)); odp = in[i].first-1; //cout<<res<<" "<<odp<<endl<<endl; } } if(in[i].second+1<in[i+1].first){ //cout<<"post "<<in[i].first<<" "<<in[i].second<<endl; if(abs(s-(in[i].second+1)) < res and in[i].second != n){ //cout<<"post "<<in[i].first<<" "<<in[i].second<<endl; res = abs(s-(in[i].second+1)); odp = in[i].second+1; //cout<<res<<" "<<odp<<endl<<endl; } } } if(in[m].second != n){ if(abs(s-(in[m].second+1)) < res){ res = abs(s-(in[m].second+1)); odp = in[m].second+1; } } cout<<odp; // cout<<odp<<" "<<res; } |