Advertisement
Guest User

Untitled

a guest
Jul 13th, 2014
225
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.02 KB | None | 0 0
  1. #include <iostream>
  2.  
  3. using namespace std;
  4. const int N=100000;
  5. int segment[N*3];
  6. int segmentt[N*4];
  7. bool st;
  8. int query (int f,int t,int l,int r,int i) {
  9.     segment[i]+=segmentt[i];
  10.     segmentt[i]=0;
  11.     if (f>r || t<l) return 0;
  12.     if (l>=f && r<=t) return segment[i];
  13.     return query(f,t,(l+r)/2+1,r,i*2+1)+query(f,t,l,(l+r)/2,i*2);
  14. }
  15. void update (int f,int t,int v,int l,int r,int i) {
  16.     if (f>r || t<l) return;
  17.     if (l>=f && r<=t) {
  18.         segment[i]+=v;
  19.         segmentt[i]=0;
  20.         if (l!=r) {
  21.         segmentt[i*2]=v;
  22.         segmentt[i*2+1]=v;
  23.         }
  24.         return ;
  25.     }
  26.     update (f,t,v,(l+r)/2+1,r,i*2+1);
  27.     update (f,t,v,l,(l+r)/2,i*2);
  28. }
  29. int main()
  30. {
  31.     int n,q;
  32.     cin>>n>>q;
  33.     for (int i=0; i<q; i++)
  34.     {
  35.         cin>>st;
  36.         if (st)
  37.         {
  38.                 int a,b;
  39.                 cin>>a>>b;
  40.                 cout<<query(a,b,1,n,1)<<endl;
  41.         }
  42.         else {
  43.         int a,b,v;
  44.         cin>>a>>b>>v;
  45.         update(a,b,v,1,n,1);
  46.         }
  47.     }
  48. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement