• API
• FAQ
• Tools
• Trends
• Archive
daily pastebin goal
72%
SHARE
TWEET

# Untitled

a guest Aug 12th, 2017 60 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