#include<iostream>
#include<algorithm>
#include<cmath>
#define ll long long
using namespace std;
bool war(pair<ll, ll> a, pair<ll, ll> b)
{
return (a.second<b.second);
}
ll abs2(ll a)
{
if(a<0)
return -1*a;
else return a;
}
int main()
{
ios_base::sync_with_stdio(false);
cin.tie(0);
ll n, m, s;
cin >> n >> m >> s;
pair<ll, ll> przedzialy[m];
pair<ll, ll> pom={-1,-1};
ll indeks=-1;
for(int i=0; i<m; i++)
{
cin >> przedzialy[i].first >> przedzialy[i].second;
if(s<=przedzialy[i].second && s>=przedzialy[i].first)
pom = przedzialy[i];
}
sort(przedzialy, przedzialy+m, war);
for(int i=0; i<m; i++)
if(przedzialy[i]==pom)
indeks = i;
ll min_roznica=1e13, p=-1;
for(int i=indeks; i>=0; i--)
{
if((i>0 && przedzialy[i].first-przedzialy[i-1].second>1) || (przedzialy[i].first>1 && i==0))
{
min_roznica = abs2(przedzialy[i].first-1-s);
p=przedzialy[i].first-1;
break;
}
}
for(int i=indeks; i<m; i++)
{
if((i<m-1 && przedzialy[i+1].first-przedzialy[i].second>1) || (i==m-1 && przedzialy[i].second+1<=n))
{
if(abs2(przedzialy[i].second+1-s)<min_roznica)
{
p = przedzialy[i].second+1;
min_roznica = abs2(p-s);
break;
}
}
}
cout << p;
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 57 58 59 60 61 62 | #include<iostream> #include<algorithm> #include<cmath> #define ll long long using namespace std; bool war(pair<ll, ll> a, pair<ll, ll> b) { return (a.second<b.second); } ll abs2(ll a) { if(a<0) return -1*a; else return a; } int main() { ios_base::sync_with_stdio(false); cin.tie(0); ll n, m, s; cin >> n >> m >> s; pair<ll, ll> przedzialy[m]; pair<ll, ll> pom={-1,-1}; ll indeks=-1; for(int i=0; i<m; i++) { cin >> przedzialy[i].first >> przedzialy[i].second; if(s<=przedzialy[i].second && s>=przedzialy[i].first) pom = przedzialy[i]; } sort(przedzialy, przedzialy+m, war); for(int i=0; i<m; i++) if(przedzialy[i]==pom) indeks = i; ll min_roznica=1e13, p=-1; for(int i=indeks; i>=0; i--) { if((i>0 && przedzialy[i].first-przedzialy[i-1].second>1) || (przedzialy[i].first>1 && i==0)) { min_roznica = abs2(przedzialy[i].first-1-s); p=przedzialy[i].first-1; break; } } for(int i=indeks; i<m; i++) { if((i<m-1 && przedzialy[i+1].first-przedzialy[i].second>1) || (i==m-1 && przedzialy[i].second+1<=n)) { if(abs2(przedzialy[i].second+1-s)<min_roznica) { p = przedzialy[i].second+1; min_roznica = abs2(p-s); break; } } } cout << p; return 0; } |
English