Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- using namespace std;
- const int N = 1e5;
- const long long inf = 2e18;
- int n;
- long long T, d[N];
- int main(){
- cin >> n >> T;
- vector < pair <int, long long> > vec;
- for (int i = 1; i <= n; i++) {
- long long p, v;
- cin >> p >> v;
- vec.push_back(make_pair(p, p + v * T));
- }
- d[0] = -inf;
- for (int i = 1; i < N; i++) {
- d[i] = inf;
- }
- sort(vec.rbegin(), vec.rend());
- for (int i = 0; i < vec.size(); i++) {
- long long finish = vec[i].second + i;
- int j = upper_bound(d, d + n, finish) - d;
- if (d[j - 1] < finish && d[j] > finish) {
- d[j] = finish;
- }
- }
- for (int i = N - 1; i >= 0; i--) {
- if (d[i] != inf) {
- cout << i << endl;
- return 0;
- }
- }
- }
Advertisement
Advertisement
Advertisement
RAW Paste Data
Copied
Advertisement