#include <stdio.h>
#include <map>
#define lli long long int
using namespace std;
map<lli, lli> przedzialy;
lli n,s;
int m;
int main() {
scanf("%lld %d %lld", &n, &m, &s);
for (int i=0; i<m; i++) {
lli a,b;
scanf("%lld %lld", &a, &b);
auto mniejszy = przedzialy.lower_bound(a);
if (mniejszy != przedzialy.begin()) {
mniejszy--;
if (mniejszy->second+1 == a) {
a = mniejszy->first;
przedzialy.erase(mniejszy);
}
}
auto wiekszy = przedzialy.lower_bound(b);
if (wiekszy != przedzialy.end()) {
if (wiekszy->first == b+1) {
b = wiekszy->second;
przedzialy.erase(wiekszy);
}
}
przedzialy[a] = b;
}
auto przedzial_szkoly = przedzialy.upper_bound(s);
przedzial_szkoly--;
//printf("%lld %lld", przedzial_szkoly->first, przedzial_szkoly->second);
lli odleglosc = n;
lli wynik;
if(przedzial_szkoly->first!=1) {
odleglosc=s-przedzial_szkoly->first;
wynik=przedzial_szkoly->first-1;
}
if(przedzial_szkoly->second!=n) {
if (przedzial_szkoly->second-s < odleglosc) {
//odleglosc=n-przedzial_szkoly->second;
wynik=przedzial_szkoly->second+1;
}
}
printf("%lld\n", wynik);
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 | #include <stdio.h> #include <map> #define lli long long int using namespace std; map<lli, lli> przedzialy; lli n,s; int m; int main() { scanf("%lld %d %lld", &n, &m, &s); for (int i=0; i<m; i++) { lli a,b; scanf("%lld %lld", &a, &b); auto mniejszy = przedzialy.lower_bound(a); if (mniejszy != przedzialy.begin()) { mniejszy--; if (mniejszy->second+1 == a) { a = mniejszy->first; przedzialy.erase(mniejszy); } } auto wiekszy = przedzialy.lower_bound(b); if (wiekszy != przedzialy.end()) { if (wiekszy->first == b+1) { b = wiekszy->second; przedzialy.erase(wiekszy); } } przedzialy[a] = b; } auto przedzial_szkoly = przedzialy.upper_bound(s); przedzial_szkoly--; //printf("%lld %lld", przedzial_szkoly->first, przedzial_szkoly->second); lli odleglosc = n; lli wynik; if(przedzial_szkoly->first!=1) { odleglosc=s-przedzial_szkoly->first; wynik=przedzial_szkoly->first-1; } if(przedzial_szkoly->second!=n) { if (przedzial_szkoly->second-s < odleglosc) { //odleglosc=n-przedzial_szkoly->second; wynik=przedzial_szkoly->second+1; } } printf("%lld\n", wynik); return 0; } |
English