/* 2025
* Maciej Szeptuch
*/
#include <algorithm>
#include <cstdio>
int intervals;
long long int buildings;
long long int school;
std::pair<long long int, long long int> occupied[1024];
int main(void)
{
scanf("%lld %d %lld", &buildings, &intervals, &school);
for(int i = 0; i < intervals; ++i)
scanf("%lld %lld", &occupied[i].first, &occupied[i].second);
std::sort(occupied, occupied + intervals);
int school_interval = 0;
while(school_interval < intervals && occupied[school_interval].second < school)
++school_interval;
int left = school_interval;
while(left > 0 && occupied[left - 1].second + 1 == occupied[left].first)
--left;
int right = school_interval;
while(right < intervals - 1 && occupied[right].second + 1 == occupied[right + 1].first)
++right;
long long int best = occupied[left].first - 1;
if(!best)
best = occupied[right].second + 1;
else if(occupied[right].second + 1 <= buildings && school - best > occupied[right].second + 1 - school)
best = occupied[right].second + 1;
printf("%lld\n", best);
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 | /* 2025 * Maciej Szeptuch */ #include <algorithm> #include <cstdio> int intervals; long long int buildings; long long int school; std::pair<long long int, long long int> occupied[1024]; int main(void) { scanf("%lld %d %lld", &buildings, &intervals, &school); for(int i = 0; i < intervals; ++i) scanf("%lld %lld", &occupied[i].first, &occupied[i].second); std::sort(occupied, occupied + intervals); int school_interval = 0; while(school_interval < intervals && occupied[school_interval].second < school) ++school_interval; int left = school_interval; while(left > 0 && occupied[left - 1].second + 1 == occupied[left].first) --left; int right = school_interval; while(right < intervals - 1 && occupied[right].second + 1 == occupied[right + 1].first) ++right; long long int best = occupied[left].first - 1; if(!best) best = occupied[right].second + 1; else if(occupied[right].second + 1 <= buildings && school - best > occupied[right].second + 1 - school) best = occupied[right].second + 1; printf("%lld\n", best); return 0; } |
English