Sreekar_0125

Untitled

Sep 22nd, 2024
242
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.51 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. void fast()
  4. {
  5.     ios_base::sync_with_stdio(false);
  6.     cin.tie(NULL);
  7.     cout.tie(NULL);
  8. }
  9. #define mod 1000000007
  10. #define pb push_back
  11. #define F first
  12. #define S second
  13. #define all(x) x.begin(), x.end()
  14. #define f(i, s, n) for (i = s; i < n; i++)
  15. #define yes cout << "yes" << endl;
  16. #define no cout << "no" << endl;
  17. #define vi vector<ll>
  18. #define vb vector<bool>
  19. #define pii pair<ll, ll>
  20. #define vpi vector<pii>
  21. #define umi unordered_map<ll, ll>
  22. #define mi map<ll, ll>
  23. #define si set<ll>
  24.  
  25. void init_code()
  26. {
  27. #ifndef ONLINE_JUDGE
  28.     freopen("input.txt", "r", stdin);
  29.     freopen("output.txt", "w", stdout);
  30.     freopen("error.txt", "w", stderr);
  31. #endif // ONLINE_JUDGE
  32. }
  33.  
  34. bool cmp(pair<pair<int, int>, int> a, pair<pair<int, int>, int> b)
  35. {
  36.     if (a.second != b.second)
  37.     {
  38.         return a.second > b.second;
  39.     }
  40.     else
  41.         return a.first.first > b.first.first;
  42. }
  43.  
  44. void solve()
  45. {
  46.     int n, q;
  47.     cin >> n >> q;
  48.     vector<pair<pair<int, int>, int>> v(n);
  49.     int i, j, sum = 0, ans = 0;
  50.     f(i, 0, n)
  51.     {
  52.         cin >> v[i].F.F;
  53.         cin >> v[i].F.S;
  54.         cin >> v[i].S;
  55.     }
  56.  
  57.     vector<pair<pair<int, int>, int>> queries(q);
  58.     f(i, 0, q)
  59.     {
  60.         cin >> queries[i].F.F >> queries[i].F.S;
  61.         queries[i].S = i;
  62.     }
  63.     if (n == 0)
  64.     {
  65.         f(i, 0, q)
  66.         {
  67.             cout << "0" << endl;
  68.         }
  69.         return;
  70.     }
  71.     sort(all(queries));
  72.     reverse(all(queries));
  73.     sort(all(v), cmp);
  74.     int x = 0;
  75.     vector<int> pre(1e4 + 5), cur(1e4 + 5);
  76.     vector<int> final_ans(q);
  77.     for (i = 0; i < n; i++)
  78.     {
  79.         while (x < q && queries[x].F.F >= v[i].S)
  80.         {
  81.             final_ans[queries[x].S] = pre[queries[x].F.S];
  82.             x++;
  83.         }
  84.         for (j = 0; j <= 1e4; j++)
  85.         {
  86.             // if (j - 1 >= 0)
  87.             // {
  88.             //     cur[j] = max(cur[j], pre[j - 1]);
  89.             // }
  90.             if (j - v[i].F.S >= 0)
  91.             {
  92.                 cur[j] = max(cur[j], pre[j - v[i].F.S] + v[i].F.F);
  93.             }
  94.         }
  95.         pre = cur;
  96.     }
  97.  
  98.     while (x < q && queries[x].F.F < v[n - 1].S)
  99.     {
  100.         final_ans[queries[x].S] = pre[queries[x].F.S];
  101.         x++;
  102.     }
  103.  
  104.     for (i = 0; i < q; i++)
  105.     {
  106.         cout << final_ans[i] << endl;
  107.     }
  108.  
  109.     return;
  110. }
  111.  
  112. signed main()
  113. {
  114.     init_code();
  115.     fast();
  116.     int t = 1;
  117.     // cin >> t;
  118.     while (t--)
  119.     {
  120.         solve();
  121.     }
  122.     return 0;
  123. }
Advertisement
Add Comment
Please, Sign In to add comment