SHARE
TWEET

Untitled

a guest Aug 12th, 2017 59 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  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. }
RAW Paste Data
Top