fork download
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. void constructUntil(int i, int s, int e, int *tree, int A[]){
  4. if(s > e) return;
  5. if(s == e){
  6. tree[i] = A[s];
  7. return;
  8. }
  9. int mid = (s + e)/2;
  10. constructUntil(i*2 + 1, s, mid, tree, A);
  11. constructUntil(i*2 + 2, mid + 1, e, tree, A);
  12. tree[i] = tree[i*2 + 1] + tree[i*2 + 2];
  13. }
  14. void constructTree(int A[], int *tree, int n){
  15. constructUntil(0, 0, n-1, tree, A);
  16. }
  17. void updateUntil(int si, int s, int e, int i, int j, int k, int *tree){
  18. if(s > e || i > e || j < s) return;
  19. if(s == e){
  20. tree[si] += k;
  21. return;
  22. }
  23. int mid = (s + e)/2;
  24. updateUntil(si*2 + 1, s, mid, i, j, k, tree);
  25. updateUntil(si*2 + 2, mid + 1, e, i, j, k, tree);
  26. tree[si] = tree[si*2 + 1] + tree[si*2 + 2];
  27. }
  28. void update(int *tree, int i, int j, int k, int n){
  29. updateUntil(0, 0, n - 1, i, j, k, tree);
  30. }
  31. int getUntil(int i, int s, int e, int pos, int *tree){
  32. if(s == e) return tree[i];
  33. int mid = (s + e)/2;
  34. if(pos <= mid)
  35. return getUntil(i*2 + 1, s, mid, pos, tree);
  36. else
  37. return getUntil(i*2 + 2, mid + 1, e, pos, tree);
  38. }
  39. int get(int *tree, int pos, int n){
  40. return getUntil(0, 0, n-1, pos, tree);
  41. }
  42. int main() {
  43. int A[] = {1, 2, 3, 4, 5};
  44. int n = sizeof(A)/sizeof(A[0]);
  45. int x = (int)(ceil(log2(n)));
  46. int max_size = (int)pow(2, x) - 1;
  47. cout<<max_size<<"\n";
  48. int *tree = new int[max_size];
  49. constructTree(A, tree, n);
  50. for(int i = 0; i < max_size; i++){
  51. cout<<tree[i]<<" ";
  52. }
  53. cout<<"\n";
  54. update(tree, 1, 3, 1, n);
  55. for(int i = 0; i < max_size; i++){
  56. cout<<tree[i]<<" ";
  57. }
  58. cout<<"\n";
  59. cout<<get(tree, 0, n)<<"\n";
  60. cout<<get(tree, 1, n)<<"\n";
  61. cout<<get(tree, 2, n)<<"\n";
  62. cout<<get(tree, 3, n)<<"\n";
  63. cout<<get(tree, 4, n)<<"\n";
  64. }
Compilation error #stdin compilation error #stdout 0s 0KB
stdin
Standard input is empty
compilation info
Main.java:1: error: illegal character: '#'
#include <bits/stdc++.h>
^
Main.java:1: error: class, interface, or enum expected
#include <bits/stdc++.h>
         ^
Main.java:3: error: class, interface, or enum expected
void constructUntil(int i, int s, int e, int *tree, int A[]){
^
Main.java:5: error: class, interface, or enum expected
    if(s == e){
    ^
Main.java:7: error: class, interface, or enum expected
        return;
        ^
Main.java:8: error: class, interface, or enum expected
    }
    ^
Main.java:10: error: class, interface, or enum expected
    constructUntil(i*2 + 1, s, mid, tree, A);
    ^
Main.java:11: error: class, interface, or enum expected
    constructUntil(i*2 + 2, mid + 1, e, tree, A);
    ^
Main.java:12: error: class, interface, or enum expected
    tree[i] = tree[i*2 + 1] + tree[i*2 + 2];
    ^
Main.java:13: error: class, interface, or enum expected
}
^
Main.java:16: error: class, interface, or enum expected
}
^
Main.java:19: error: class, interface, or enum expected
    if(s == e){
    ^
Main.java:21: error: class, interface, or enum expected
        return;
        ^
Main.java:22: error: class, interface, or enum expected
    }
    ^
Main.java:24: error: class, interface, or enum expected
    updateUntil(si*2 + 1, s, mid, i, j, k, tree);
    ^
Main.java:25: error: class, interface, or enum expected
    updateUntil(si*2 + 2, mid + 1, e, i, j, k, tree);
    ^
Main.java:26: error: class, interface, or enum expected
    tree[si] = tree[si*2 + 1] + tree[si*2 + 2];
    ^
Main.java:27: error: class, interface, or enum expected
}
^
Main.java:30: error: class, interface, or enum expected
}
^
Main.java:33: error: class, interface, or enum expected
    int mid = (s + e)/2;
    ^
Main.java:34: error: class, interface, or enum expected
    if(pos <= mid)
    ^
Main.java:36: error: class, interface, or enum expected
    else
    ^
Main.java:38: error: class, interface, or enum expected
}
^
Main.java:41: error: class, interface, or enum expected
}
^
Main.java:44: error: class, interface, or enum expected
    int n = sizeof(A)/sizeof(A[0]);
    ^
Main.java:45: error: class, interface, or enum expected
    int x = (int)(ceil(log2(n)));
    ^
Main.java:46: error: class, interface, or enum expected
    int max_size = (int)pow(2, x) - 1;
    ^
Main.java:47: error: class, interface, or enum expected
    cout<<max_size<<"\n";
    ^
Main.java:48: error: class, interface, or enum expected
    int *tree = new int[max_size];
    ^
Main.java:49: error: class, interface, or enum expected
    constructTree(A, tree, n);
    ^
Main.java:50: error: class, interface, or enum expected
    for(int i = 0; i < max_size; i++){
    ^
Main.java:50: error: class, interface, or enum expected
    for(int i = 0; i < max_size; i++){
                   ^
Main.java:50: error: class, interface, or enum expected
    for(int i = 0; i < max_size; i++){
                                 ^
Main.java:52: error: class, interface, or enum expected
    }
    ^
Main.java:54: error: class, interface, or enum expected
    update(tree, 1, 3, 1, n);
    ^
Main.java:55: error: class, interface, or enum expected
    for(int i = 0; i < max_size; i++){
    ^
Main.java:55: error: class, interface, or enum expected
    for(int i = 0; i < max_size; i++){
                   ^
Main.java:55: error: class, interface, or enum expected
    for(int i = 0; i < max_size; i++){
                                 ^
Main.java:57: error: class, interface, or enum expected
    }
    ^
Main.java:59: error: class, interface, or enum expected
    cout<<get(tree, 0, n)<<"\n";
    ^
Main.java:60: error: class, interface, or enum expected
    cout<<get(tree, 1, n)<<"\n";
    ^
Main.java:61: error: class, interface, or enum expected
    cout<<get(tree, 2, n)<<"\n";
    ^
Main.java:62: error: class, interface, or enum expected
    cout<<get(tree, 3, n)<<"\n";
    ^
Main.java:63: error: class, interface, or enum expected
    cout<<get(tree, 4, n)<<"\n";
    ^
Main.java:64: error: class, interface, or enum expected
}
^
45 errors
stdout
Standard output is empty