Advertisement
Guest User

Untitled

a guest
May 28th, 2017
83
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.29 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. string s;
  4. long long ans;
  5. int n, m, p, a, b, lv, rv, x[10000009];
  6. void unit()
  7. {
  8. for(int i = p-1; i>=1; i--)
  9. x[i] = x[i*2]+x[i*2+1];
  10.  
  11. }
  12. void modify(int v, int izm)
  13. {
  14. x[v] = izm;
  15. while (v>1)
  16. {
  17. v=v/2;
  18. x[v]=x[v*2]+x[v*2+1];
  19. }
  20. }
  21. int sum(int lv,int rv,int v, int l, int r)
  22. {
  23.  
  24. if (lv>r || rv<l)
  25. {
  26. return 0;
  27.  
  28. }
  29. else if (l>=lv && rv>=r)
  30. {
  31. return x[v];
  32. }
  33.  
  34. else
  35. {
  36. return sum(lv,rv,2*v,l,(l+r)/ 2)+sum(lv,rv,2*v+1,((l+r)/ 2)+1,r);
  37. }
  38. }
  39. int main()
  40. {
  41. //freopen("input.txt", "r", stdin);
  42. // freopen("output.txt", "w", stdout);
  43. cin >> n >> m;
  44. p = 1;
  45. while(p < n)
  46. {
  47. p*=2;
  48. }
  49. for(int i = 1; i<=n; i++)
  50. {
  51. cin >> x[p + i - 1];
  52. }
  53. unit();
  54. for (int i=p;i<=2*p-1;i++)
  55. cout << x[i] << " ";
  56. cout << endl;
  57. for(int i = 1; i<=m; i++)
  58. {
  59. cin >> s;
  60. cin >> a >> b;
  61. if (s == "=")
  62. {
  63. modify(a+p-1, b);
  64. }
  65. else
  66. {
  67. ans = 0;
  68. lv = a + p - 1;
  69. rv = b + p - 1;
  70. cout << sum(lv,rv,1,p,2*p-1) << endl;
  71. // cout << ans << endl;
  72. }
  73. }
  74. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement