Iamtui1010

flowers

Nov 11th, 2021
106
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.30 KB | None | 0 0
  1. //#include<bits/stdc++.h>
  2. #include<iostream>
  3. #include<vector>
  4. #include<fstream>
  5. #include<algorithm>
  6.  
  7. #define long long long
  8. #define nln '\n'
  9.  
  10. const long N = 2*1e5+10;
  11.  
  12. using namespace std;
  13.  
  14. // GLobal variables: n, h, a
  15.  
  16. fstream f1;
  17. long n;
  18. vector<long> h, a;
  19.  
  20. void data()
  21. {
  22.     f1.open("flowers.inp", ios:: in);
  23.     cin >> n;
  24.     h.resize(n+1, 0);
  25.     a.resize(n+1, 0);
  26.     for (long i = 1; i <= n; ++i)
  27.         cin >> h[i];
  28.     for (long i = 1; i <= n; ++i)
  29.         cin >> a[i];
  30.     f1.close();
  31. }
  32.  
  33. vector<long> tre;
  34.  
  35. long get(long id, long lef, long rig, long i, long j)
  36. {
  37.     if (lef > j || rig < i)
  38.         return 0;
  39.  
  40.     if (lef == rig || (lef >= i && rig <=j))
  41.         return tre[id];
  42.  
  43.     long mid = (lef + rig)/2;
  44.  
  45.     return max(get(id*2, lef, mid, i, j), get(id*2+1, mid+1, rig, i, j));
  46. }
  47.  
  48. void update(long id, long lef, long rig, long hig, long beu)
  49. {
  50.     if (lef == rig)
  51.     {
  52.         tre[id] = beu;
  53.         return;
  54.     }
  55.     long mid = (lef+rig)/2;
  56.  
  57.     if (hig <= mid)
  58.         update(id*2, lef, mid, hig, beu);
  59.     else
  60.         update(id*2+1, mid+1, rig, hig, beu);
  61.  
  62.     tre[id] = max(tre[id*2], tre[id*2+1]);
  63. }
  64.  
  65. void process()
  66. {
  67.     tre.resize(n*4+1, 0);
  68.     for (long k = 1; k <= n; ++k)
  69.     {
  70.         long mav = get(1, 1, n, 1, h[k]-1);
  71.         update(1, 1, n, h[k], mav+a[k]);
  72.     }
  73.     cout << tre[1] << nln;
  74. }
  75.  
  76. int main()
  77. {
  78.     data();
  79.     process();
  80.     return 0;
  81. }
  82.  
Advertisement
Add Comment
Please, Sign In to add comment