Tranvick

Untitled

Dec 29th, 2011
168
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.81 KB | None | 0 0
  1. #include <iostream>
  2. #include <cstdio>
  3.  
  4. using namespace std;
  5.  
  6. int s[111111],n,q;
  7.  
  8. void modify(int pos, int value){   //прибавить value в позицию pos
  9.     for (;pos<=n;pos|=pos-1,++pos) s[pos]+=value;
  10. }
  11.  
  12. int findsum(int l, int r){ //запрос суммы от l до r
  13.     int res=0,p;
  14.     for (p=r;p>0;p&=p-1) res+=s[p];
  15.     for (p=l-1;p>0;p&=p-1) res-=s[p];
  16.     return res;
  17. }
  18.  
  19. int main(){
  20. //      тут тупо для тестирования
  21.     cin>>n>>q; //вводим размер массива и число запросов
  22.     for (int i=1;i<=q;i++){
  23.         int a,b,c;
  24.         cin>>a>>b>>c;
  25.         if (a==1) modify(b,c); // если а=1, то прибавляем с в позицию b
  26.         else cout<<findsum(b,c)<<endl; // иначе выводим сумму от b до с
  27.     }
  28.     return 0;
  29. }
Advertisement
Add Comment
Please, Sign In to add comment