Tranvick

Untitled

Mar 31st, 2012
164
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.78 KB | None | 0 0
  1. // вообще я совсем по-другому пишу, но может тебе так будет проще
  2. #include <cstdio>
  3.  
  4. int s[111],n; // s- наш сумматор, n- сколько в нем элементов
  5.  
  6. int prev(int x){ // дает номер предыдущей ячейки для ячейки номер х
  7.     return x&(x-1);
  8. }
  9.  
  10. int next(int x){ // дает номер следующей ячейки для ячейки номер х
  11.     return x+x-prev(x);
  12. }
  13.  
  14. void update(int pos,int value){ // прибавить значение value в позиции pos
  15.     for (;pos<=n;pos=next(pos)) s[pos]+=value;
  16. }
  17.  
  18. int getsum(int pos){ // находит сумму на интервале [1;pos]
  19.     int res=0;
  20.     for(;pos;pos=prev(pos)) res+=s[pos];
  21.     return res;
  22. }
Advertisement
Add Comment
Please, Sign In to add comment