#include <cstdio>
#include <set>
#include <cstdlib>
const long long int INF = 100000000000000;
int main()
{
int n,m;
long long int s;
scanf("%d %d %lld", &n, &m, &s);
long long int l,r;
std::set<std::pair<long long int,long long int>> intervals{};
for(int i=0; i<m; i++)
{
scanf("%lld %lld", &l, &r);
intervals.insert({l,r});
}
long long int bestBeforeSchool = INF;
long long int bestAfterSchool = INF;
long long int prev_r = 0;
for(const auto [l,r] : intervals)
{
if(l-prev_r > 1L)
{
if( l <= s ) bestBeforeSchool = l-1L;
if( l > s )
{
bestAfterSchool = prev_r+1L;
break;
}
}
prev_r = r;
}
if(prev_r<n-1 && bestAfterSchool==INF) bestAfterSchool=prev_r+1L;
long long int result;
if(std::abs(s-bestBeforeSchool) <= bestAfterSchool-s) result = bestBeforeSchool;
else result = bestAfterSchool;
printf("%lld", result);
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 | #include <cstdio> #include <set> #include <cstdlib> const long long int INF = 100000000000000; int main() { int n,m; long long int s; scanf("%d %d %lld", &n, &m, &s); long long int l,r; std::set<std::pair<long long int,long long int>> intervals{}; for(int i=0; i<m; i++) { scanf("%lld %lld", &l, &r); intervals.insert({l,r}); } long long int bestBeforeSchool = INF; long long int bestAfterSchool = INF; long long int prev_r = 0; for(const auto [l,r] : intervals) { if(l-prev_r > 1L) { if( l <= s ) bestBeforeSchool = l-1L; if( l > s ) { bestAfterSchool = prev_r+1L; break; } } prev_r = r; } if(prev_r<n-1 && bestAfterSchool==INF) bestAfterSchool=prev_r+1L; long long int result; if(std::abs(s-bestBeforeSchool) <= bestAfterSchool-s) result = bestBeforeSchool; else result = bestAfterSchool; printf("%lld", result); return 0; } |
English