fork download
  1. #include<iostream>
  2. #include<cstdio>
  3. #include<cmath>
  4. using namespace std;
  5.  
  6. long long int num;
  7. long long int bit[1000001]={0};
  8.  
  9.  
  10. long long int sum(long long int b)
  11. {
  12. long long int sum = 0;
  13. for (; b; b -= b&(-b))
  14. sum += bit[b];
  15. return sum;
  16. }
  17.  
  18. long long int sum(long long int a, long long int b)
  19. {
  20. return sum(b) - (a == 1 ? 0 : sum(a - 1));
  21. }
  22.  
  23. void update( long long int idx, long long int val)
  24. {
  25. while(idx<=num){
  26. bit[idx]+=val;
  27.  
  28. idx+=(idx&(-idx));
  29. }
  30. }
  31.  
  32. void updatesub( long long int idx, long long int val)
  33. {
  34. while(idx<=num){
  35. bit[idx]-=val;
  36.  
  37. idx+=(idx&(-idx));
  38. }
  39. }
  40.  
  41.  
  42. int main()
  43. {
  44. int e,i;
  45. long long int s=0,m,c;
  46. cin>>num;
  47.  
  48. for(i=1;i<=num;i++)
  49. {
  50. cin>>e;
  51. update(i,e);
  52. }
  53. for(i=1;i<=num;i++)
  54. cout<<bit[i]<<" ";
  55. return 0;
  56. }
Success #stdin #stdout 0s 11160KB
stdin
16
1 0 2 1 1 3 0 4 2 5 2 2 3 1 0 2
stdout
1 1 2 4 1 4 0 12 2 7 2 11 3 4 0 29