Advertisement
Guest User

Untitled

a guest
Aug 12th, 2017
87
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.14 KB | None | 0 0
  1. #include <stdio.h>
  2. const int N=200001;
  3. const int M=20000050;
  4. int clock,root[N],r[M],l[M];
  5. long long a[M],b[M],A,B;
  6. void Set(int p, int &c, int ss, int se, int qs, int qe, int u, int v)
  7. {
  8. c=++clock;
  9. l[c]=l[p];
  10. r[c]=r[p];
  11. a[c]=a[p];
  12. b[c]=b[p];
  13. if(qs<=ss && qe>=se)
  14. {
  15. a[c]+=u;
  16. b[c]+=v;
  17. return;
  18. }
  19. int mid=(ss+se)>>1;
  20. if(qs<=mid) Set(l[p],l[c],ss,mid,qs,qe,u,v);
  21. if(qe>mid) Set(r[p],r[c],mid+1,se,qs,qe,u,v);
  22. }
  23. void Get(int c, int ss, int se, int qi, int mark)
  24. {
  25. A+=a[c]*mark;
  26. B+=b[c]*mark;
  27. if(ss==se) return;
  28. int mid=(ss+se)>>1;
  29. if(qi<=mid) Get(l[c],ss,mid,qi,mark);
  30. else Get(r[c],mid+1,se,qi,mark);
  31. }
  32. int main()
  33. {
  34. int n,i,l,r,x,y,u,v,q;
  35. scanf("%i",&n);
  36. for(i=1;i<=n;i++)
  37. {
  38. scanf("%i %i %i %i %i %i",&l,&r,&x,&u,&v,&y);
  39. Set(root[i-1],root[i],0,N,0,l,0,x);
  40. Set(root[i],root[i],0,N,l+1,r,u,v);
  41. Set(root[i],root[i],0,N,r+1,N,0,y);
  42. }
  43. scanf("%i",&q);
  44. long long last=0;
  45. while(q--)
  46. {
  47. scanf("%i %i %i",&l,&r,&x);
  48. x=(x+last)%1000000000;
  49. int t=x;
  50. if(t>N) t=N;
  51. A=0;
  52. B=0;
  53. Get(root[l-1],0,N,t,-1);
  54. Get(root[r],0,N,t,1);
  55. last=A*x+B;
  56. printf("%lld\n",last);
  57. }
  58. return 0;
  59. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement