Advertisement
sacgajcvs

aa

Jul 27th, 2019
154
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.05 KB | None | 0 0
  1. /*
  2. 7
  3. 5 6 9 11 12 16 20
  4. 2 3 1 5 3 1 1
  5.  
  6. _____ _ _ _ _
  7. |_ _| |__ ___ / \ _ __ ___| |__ _ _| |
  8. | | | '_ \ / _ \ / _ \ | '_ \/ __| '_ \| | | | |
  9. | | | | | | __// ___ \| | | \__ \ | | | |_| | |
  10. |_| |_| |_|\___/_/ \_\_| |_|___/_| |_|\__,_|_|
  11.  
  12. */
  13. #include<bits/stdc++.h>
  14. #define ll long long
  15. #define pb push_back
  16. #define ppb pop_back
  17. #define endl '\n'
  18. #define mii map<ll int,ll int>
  19. #define msi map<string,ll int>
  20. #define mis map<ll int, string>
  21. #define rep(i,a,b) for(ll int i=a;i<b;i++)
  22. #define mpi map<pair<ll int,ll int>,ll int>
  23. #define pii pair<ll int,ll int>
  24. #define vi vector<ll int>
  25. #define vii vector<pair<ll int, ll int>>
  26. #define vs vector<string>
  27. #define all(a) (a).begin(),(a).end()
  28. #define F first
  29. #define S second
  30. #define sz(x) (ll int)x.size()
  31. #define hell 1000000007
  32. #define lbnd lower_bound
  33. #define ubnd upper_bound
  34. #define bs binary_search
  35. #define mp make_pair
  36. #define what_is(x) cerr << #x << " is " << x << endl;
  37. #define time cerr << "\nTime elapsed: " << 1000 * clock() / CLOCKS_PER_SEC << "ms\n";
  38. using namespace std;
  39. #define N 100005
  40. ll n,l,r;
  41. vi a(N),seg(4*N);
  42. void build(ll cur,ll st,ll end)
  43. {
  44. if(st==end)
  45. {
  46. seg[cur]=a[st];
  47. return;
  48. }
  49. ll mid=(st+end)>>1;
  50. build(2*cur,st,mid);
  51. build(2*cur+1,mid+1,end);
  52. seg[cur]=max(seg[2*cur],seg[2*cur+1]); /* 1-change here */
  53. }
  54. ll query(ll cur,ll st,ll end,ll l,ll r)
  55. {
  56. if(l<=st&&r>=end)
  57. return seg[cur];
  58. if(r<st||l>end)
  59. return 0; /* 2-change here */
  60. ll mid=(st+end)>>1;
  61. ll ans1=query(2*cur,st,mid,l,r);
  62. ll ans2=query(2*cur+1,mid+1,end,l,r);
  63. return max(ans1,ans2); /* 3-change here */
  64. }
  65. void update(ll cur,ll st,ll end,ll pos,ll upd)
  66. {
  67. if(st==end)
  68. {
  69. a[pos]=upd; /* 4-change here */
  70. seg[cur]=upd; /* 5-change here */
  71. return;
  72. }
  73. ll mid=(st+end)>>1;
  74. if(st<=pos&&pos<=mid)
  75. update(2*cur,st,mid,pos,upd);
  76. else
  77. update(2*cur+1,mid+1,end,pos,upd);
  78. seg[cur]=max(seg[2*cur],seg[2*cur+1]); /* 6-change here */
  79. }
  80. void solve()
  81. {
  82. ll n;
  83. cin>>n;
  84. vi aa(n),b(n);
  85. set<ll>st;
  86. rep(i,0,n)
  87. {
  88. cin>>aa[i];
  89. st.insert(aa[i]);
  90. }
  91. rep(i,0,n)
  92. {
  93. cin>>b[i];
  94. }
  95. vi ans(n);
  96. for(ll i=n-1;i>=0;i--)
  97. {
  98. ll p=ubnd(all(aa),aa[i]+b[i])-aa.begin();
  99. if(p==i+1)
  100. {
  101. ans[i]=aa[i]+b[i];
  102. }
  103. else
  104. {
  105. ans[i]=max(query(1,1,n,i+2,p),aa[i]+b[i]);
  106. }
  107. update(1,1,n,i+1,ans[i]);
  108. }
  109. rep(i,1,n+1)
  110. cout<<query(1,1,n,i,i)<<" ";
  111. return;
  112. }
  113. int main()
  114. {
  115. ios_base::sync_with_stdio(false);
  116. cin.tie(0);
  117. cout.tie(0);
  118. int TESTS=1;
  119. // cin>>TESTS;
  120. while(TESTS--)
  121. {
  122. solve();
  123. }
  124. time
  125. return 0;
  126. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement