#include #include #include #include #include using namespace std; int main() { int n, l; cin >> n >> l; pair p[n]; for(int i = 0; i < n; i++) { cin >> p[i].second >> p[i].first; } int L = 0; int R = l; int zalepeni = 0; for(int i = 0; i < n; i++) { int a = p[i].second; int b = p[i].first; if(R < a) { continue; } if(b < L) { continue; } if(a < L and R < b) { continue; } if(L <= a and b <= R) { zalepeni += 1; continue; } if(a < L) { int strci = L - a; if(strci < 0) { strci *= -1; // dolzinata mora da e pozitiven broj } int dolzina = b - a; if(dolzina < 0) { dolzina *= -1; } if(strci <= dolzina / 2) { L = a; zalepeni += 1; } } else if(R < b) { int strci = b - R; if(strci < 0) { strci *= -1; } int dolzina = b - a; if(dolzina < 0) { dolzina *= -1; } if(strci <= dolzina / 2) { R = b; zalepeni += 1; } } } int zalepeni2 = 0; sort(p, p + n); for(int i = n - 1; i >= 0; i--) { int a = p[i].second; int b = p[i].first; if(R < a) { continue; } if(b < L) { continue; } if(a < L and R < b) { continue; } if(L <= a and b <= R) { zalepeni2 += 1; continue; } if(a < L) { int strci = L - a; if(strci < 0) { strci *= -1; // dolzinata mora da e pozitiven broj } int dolzina = b - a; if(dolzina < 0) { dolzina *= -1; } if(strci <= dolzina / 2) { L = a; zalepeni2 += 1; } } else if(R < b) { int strci = b - R; if(strci < 0) { strci *= -1; } int dolzina = b - a; if(dolzina < 0) { dolzina *= -1; } if(strci <= dolzina / 2) { R = b; zalepeni2 += 1; } } } int zalepeni3 = 0; for(int i = 0; i < n; i++) { int a = p[i].second; int b = p[i].first; if(R < a) { continue; } if(b < L) { continue; } if(a < L and R < b) { continue; } if(L <= a and b <= R) { zalepeni3 += 1; continue; } if(a < L) { int strci = L - a; if(strci < 0) { strci *= -1; // dolzinata mora da e pozitiven broj } int dolzina = b - a; if(dolzina < 0) { dolzina *= -1; } if(strci <= dolzina / 2) { L = a; zalepeni3 += 1; } } else if(R < b) { int strci = b - R; if(strci < 0) { strci *= -1; } int dolzina = b - a; if(dolzina < 0) { dolzina *= -1; } if(strci <= dolzina / 2) { R = b; zalepeni3 += 1; } } } cout << max(max(zalepeni, zalepeni2), zalepeni3) << endl; return 0; } /* 7 5 2 4 -3 3 7 10 1 8 6 7 6 7 -1 6 2 4 -3 3 **/