Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // вообще я совсем по-другому пишу, но может тебе так будет проще
- #include <cstdio>
- int s[111],n; // s- наш сумматор, n- сколько в нем элементов
- int prev(int x){ // дает номер предыдущей ячейки для ячейки номер х
- return x&(x-1);
- }
- int next(int x){ // дает номер следующей ячейки для ячейки номер х
- return x+x-prev(x);
- }
- void update(int pos,int value){ // прибавить значение value в позиции pos
- for (;pos<=n;pos=next(pos)) s[pos]+=value;
- }
- int getsum(int pos){ // находит сумму на интервале [1;pos]
- int res=0;
- for(;pos;pos=prev(pos)) res+=s[pos];
- return res;
- }
Advertisement
Add Comment
Please, Sign In to add comment