#include using namespace std; int main() { int N, M; cin >> N >> M; vector< pair > requests; for (int n=0; n> a >> b; requests.push_back({a,a+b}); } sort( requests.begin(), requests.end() ); int answer = 0; multiset available; for (auto r : requests) { while (!available.empty() && *available.begin()+M < r.first) available.erase( available.begin() ); if (!available.empty() && *available.begin() <= r.first) { ++answer; available.erase( available.begin() ); } available.insert( r.second ); } cout << answer << endl; }