#include<iostream>
#include<algorithm>
#include<vector>
using namespace std;
#define L long long
L n,m,s,lewe,prawe,l,r;
vector<pair<L,L>>dat;
#define REP(i,n) for(int i=0;i<n;++i)
int main(){
cin>>n>>m>>s;
REP(i,m){
cin>>l>>r;
dat.push_back(make_pair(l,r));
}
sort(dat.begin(),dat.end());
lewe=s-1;
prawe=s+1;
REP(i,m)if(prawe>=dat[i].first&&prawe<=dat[i].second){
prawe=dat[i].second+1;
}
for(int i=m-1;i>=0;i--){
if(lewe>=dat[i].first&&lewe<=dat[i].second){
lewe=dat[i].first-1;
}
}
if(!lewe){
cout<<prawe;
}else if(prawe==n+1){
cout<<lewe;
}else if(prawe-s<s-lewe){
cout<<prawe;
}else{
cout<<lewe;
}
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 | #include<iostream> #include<algorithm> #include<vector> using namespace std; #define L long long L n,m,s,lewe,prawe,l,r; vector<pair<L,L>>dat; #define REP(i,n) for(int i=0;i<n;++i) int main(){ cin>>n>>m>>s; REP(i,m){ cin>>l>>r; dat.push_back(make_pair(l,r)); } sort(dat.begin(),dat.end()); lewe=s-1; prawe=s+1; REP(i,m)if(prawe>=dat[i].first&&prawe<=dat[i].second){ prawe=dat[i].second+1; } for(int i=m-1;i>=0;i--){ if(lewe>=dat[i].first&&lewe<=dat[i].second){ lewe=dat[i].first-1; } } if(!lewe){ cout<<prawe; }else if(prawe==n+1){ cout<<lewe; }else if(prawe-s<s-lewe){ cout<<prawe; }else{ cout<<lewe; } return 0; } |
English