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