Advertisement
Guest User

Untitled

a guest
Apr 24th, 2017
54
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.75 KB | None | 0 0
  1. #include<bits/stdc++.h>
  2.  
  3. using namespace std;
  4.  
  5. int f(vector<int> &v, int L, int R, int now, int l, int r) {
  6.     if (l >= L && r <= R) {
  7.         return v[now];
  8.     } else if (l > R || r < L) {
  9.         return 0;
  10.     } else {
  11.         int m = (r + l) / 2;
  12.         int f1 = f(v, L, R, 2 * now + 1, l, m);
  13.         int f2 = f(v, L, R, 2 * now + 2, m + 1, r);
  14.         return f1 + f2;
  15.     }
  16. }
  17.  
  18. int main() {
  19.     int n;
  20.     cin >> n;
  21.     int b = (int)ceil(log2(n));
  22.     int a = pow(2, b);
  23.     vector<int> v(2 * a);
  24.     for (int i = a - 1; i < a - 1 + n; ++i) {
  25.         cin >> v[i];
  26.     }
  27.     n = a;
  28.     for (int i = 2 * a - 2; i > 0; --i) {
  29.         v[(i + 1) / 2 - 1] += v[i];
  30.     }
  31.     int m;
  32.     cin >> m;
  33.     for (int i = 0; i < m; ++i) {
  34.         int L, R;
  35.         cin >> L >> R;
  36.         --L; --R;
  37.         cout << f(v, L, R, 0, 0, n - 1);
  38.     }
  39.     return 0;
  40. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement