fork download
  1. #include <bits/stdc++.h>
  2. #define ll long long
  3. #define N int(1e6)
  4. using namespace std;
  5. ll n;
  6. ll l[N+10],r[N+10],w[N+10];
  7. ll max1=LLONG_MIN;
  8. ll lazy[4*N],seg[4*N];
  9. void down(ll id)
  10. {
  11. ll sum=lazy[id];
  12. if(sum==0) return;
  13. seg[id*2]+=sum;
  14. lazy[id*2]+=sum;
  15. lazy[id*2+1]+=sum;
  16. seg[id*2+1]+=sum;
  17. lazy[id]=0;
  18. }
  19. void upd(ll id,ll l,ll r,ll u,ll v,ll val)
  20. {
  21. if(u>r || v<l) return ;
  22. if(u<=l && r<=v)
  23. {
  24. seg[id]+=val;
  25. lazy[id]+=val;
  26. return ;
  27. }
  28. down(id);
  29. ll mid=(l+r)/2;
  30. upd(id*2,l,mid,u,v,val);
  31. upd(id*2+1,mid+1,r,u,v,val);
  32. seg[id]=max(seg[id*2],seg[id*2+1]);
  33. }
  34. struct dl
  35. {
  36. ll l,w;
  37. };
  38. vector<dl>adj[N+10];
  39. int main()
  40. {
  41. ios::sync_with_stdio(0);
  42. cin.tie(0);
  43. cout.tie(0);
  44. if(fopen("SSEQ.INP","r"))
  45. {
  46. freopen("SSEQ.INP","r",stdin);
  47. freopen("SSEQ.OUT","w",stdout);
  48. }
  49. cin>>n;
  50. for(int i=1;i<=n;i++)
  51. {
  52. cin>>l[i]>>r[i]>>w[i];
  53. max1=max(max1,r[i]);
  54. adj[r[i]].push_back({l[i],w[i]});
  55. }
  56. ll ans=LLONG_MIN;
  57. for(int r=1;r<=max1;r++)
  58. {
  59. for(auto x:adj[r])
  60. {
  61. upd(1,1,max1,1,x.l,x.w);
  62. }
  63. ans=max(ans,seg[1]);
  64. }
  65. cout<<ans;
  66.  
  67. return 0;
  68. }
  69.  
Success #stdin #stdout 0.01s 28048KB
stdin
Standard input is empty
stdout
-9223372036854775808