Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- using namespace std;
- void fast()
- {
- ios_base::sync_with_stdio(false);
- cin.tie(NULL);
- cout.tie(NULL);
- }
- #define mod 1000000007
- #define pb push_back
- #define F first
- #define S second
- #define all(x) x.begin(), x.end()
- #define f(i, s, n) for (i = s; i < n; i++)
- #define yes cout << "yes" << endl;
- #define no cout << "no" << endl;
- #define vi vector<ll>
- #define vb vector<bool>
- #define pii pair<ll, ll>
- #define vpi vector<pii>
- #define umi unordered_map<ll, ll>
- #define mi map<ll, ll>
- #define si set<ll>
- void init_code()
- {
- #ifndef ONLINE_JUDGE
- freopen("input.txt", "r", stdin);
- freopen("output.txt", "w", stdout);
- freopen("error.txt", "w", stderr);
- #endif // ONLINE_JUDGE
- }
- bool cmp(pair<pair<int, int>, int> a, pair<pair<int, int>, int> b)
- {
- if (a.second != b.second)
- {
- return a.second > b.second;
- }
- else
- return a.first.first > b.first.first;
- }
- void solve()
- {
- int n, q;
- cin >> n >> q;
- vector<pair<pair<int, int>, int>> v(n);
- int i, j, sum = 0, ans = 0;
- f(i, 0, n)
- {
- cin >> v[i].F.F;
- cin >> v[i].F.S;
- cin >> v[i].S;
- }
- vector<pair<pair<int, int>, int>> queries(q);
- f(i, 0, q)
- {
- cin >> queries[i].F.F >> queries[i].F.S;
- queries[i].S = i;
- }
- if (n == 0)
- {
- f(i, 0, q)
- {
- cout << "0" << endl;
- }
- return;
- }
- sort(all(queries));
- reverse(all(queries));
- sort(all(v), cmp);
- int x = 0;
- vector<int> pre(1e4 + 5), cur(1e4 + 5);
- vector<int> final_ans(q);
- for (i = 0; i < n; i++)
- {
- while (x < q && queries[x].F.F >= v[i].S)
- {
- final_ans[queries[x].S] = pre[queries[x].F.S];
- x++;
- }
- for (j = 0; j <= 1e4; j++)
- {
- // if (j - 1 >= 0)
- // {
- // cur[j] = max(cur[j], pre[j - 1]);
- // }
- if (j - v[i].F.S >= 0)
- {
- cur[j] = max(cur[j], pre[j - v[i].F.S] + v[i].F.F);
- }
- }
- pre = cur;
- }
- while (x < q && queries[x].F.F < v[n - 1].S)
- {
- final_ans[queries[x].S] = pre[queries[x].F.S];
- x++;
- }
- for (i = 0; i < q; i++)
- {
- cout << final_ans[i] << endl;
- }
- return;
- }
- signed main()
- {
- init_code();
- fast();
- int t = 1;
- // cin >> t;
- while (t--)
- {
- solve();
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment