Advertisement
Guest User

Untitled

a guest
Apr 28th, 2021
318
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.47 KB | None | 0 0
  1. #include<bits/stdc++.h>
  2. #define pii pair<int,int>
  3. #define ll long long int
  4. #define f first
  5. #define s second
  6. using namespace std;const ll identity = -10000000000; ll dp[3000005];
  7. ll tree[12*100000];
  8. void update(int s,int e,int idx,int node,ll val){
  9. if(s>idx||e<idx)
  10. return;
  11. if(s==e){
  12. tree[node]=val;
  13. dp[idx]=val;
  14. return ;
  15. }
  16. ll m=s+e;
  17. m=m>>1;
  18. if(idx>=s&&idx<=m){update(s,m,idx, 2*node,val);
  19.  
  20.  
  21. }
  22. if(idx<=e&&idx>m){
  23. update(m+1,e,idx,2*node+1,val);
  24. }
  25. tree[node]=max(tree[2*node],tree[2*node+1]);
  26. }
  27. ll query(int s,int e,int l,int r,int node){
  28. if(s>r||e<l)
  29. return identity;
  30. if(s>=l&&e<=r){
  31.  
  32. return tree[node];
  33. }
  34. ll m=s+e;
  35. m=m>>1;
  36. ll p1=query(s,m,l,r,2*node);
  37. ll p2=query(m+1,e,l,r,2*node+1);
  38. return max(p1,p2);
  39.  
  40. }ll n,h[3000000],b[3000000],ind[3000000];
  41. int main(){
  42. cin>>n;
  43. for(int i=0;i<n;i++){
  44. cin>>h[i];
  45. dp[i]=identity;
  46. }
  47. for(int i=0;i<3*n;i++){
  48. tree[i]=identity;
  49. }
  50. for(int i=0;i<n;i++){
  51. cin>>b[i]; dp[i]=identity;
  52. }
  53. dp[0]=b[0];
  54. stack<pii> S;
  55. for(int i=0;i<n;i++){
  56. while(!S.empty()&& S.top().f>=h[i]){
  57. S.pop();
  58. }
  59.  
  60. if(i!=0){
  61. if(!S.empty())
  62. {
  63. ll x=query(0,n-1,S.top().s,i,1);
  64.  
  65. dp[i]=max(dp[i],x+b[i]);
  66. dp[i]=max(dp[i],dp[S.top().s-1]+b[S.top().s]);
  67. dp[i]=max(dp[i],dp[S.top().s]);
  68. }
  69. else{
  70. ll x=query(0,n-1,0,i,1);
  71. dp[i]=max(dp[i],x+b[i]);
  72. dp[i]=max(dp[i],b[i]);
  73. }
  74. }
  75. update(0,n-1,i, 1,dp[i]);
  76. S.push({h[i],i});
  77.  
  78. }
  79.  
  80. cout<<dp[n-1];
  81. return 0;
  82. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement