#define _USE_MATH_DEFINES #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; const int MAX = 1000000000; const long long INF = LLONG_MAX / 4; int solve1(const vector& t, const vector& d, int k) { int n = t.size(); int left = 0; int right = MAX; while(left < right){ int mid = (left + right) / 2; int prev = -MAX; bool ok = true; for(int i=0; i mid){ if(t[i] - prev < k) ok = false; prev = t[i]; } } if(ok) right = mid; else left = mid + 1; } return left; } long long solve2(const vector& t, const vector& d, int k, int x) { int n = t.size(); int i = 0; int j = 0; long long maxVal = 0; vector dp(n+1, -INF); dp[0] = 0; for(int i=0; i> n >> k; vector t(n); vector d(n); for(int i=0; i> t[i] >> d[i]; int x = solve1(t, d, k); cout << x << endl << solve2(t, d, k, x) << endl; return 0; }