Advertisement
Guest User

Untitled

a guest
Apr 23rd, 2017
65
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.76 KB | None | 0 0
  1. #pragma comment(linker, "/stack:200500500")
  2. #include <iostream>
  3. #include <unordered_map>
  4. #include <vector>
  5. using namespace std;
  6.  
  7. int f(vector<int> &v, int L, int R, int now, int l, int r) {
  8.     if (l >= L && r <= R) {
  9.         return v[now];
  10.     } else if (l > R || r < L) {
  11.         return 0;
  12.     } else {
  13.         int m = (r - l) / 2;
  14.         int f1 = f(v, L, R, 2 * now + 1, l, m);
  15.         int f2 = f(v, L, R, 2 * now + 2, m + 1, r);
  16.         return f1 + f2;
  17.     }
  18. }
  19.  
  20.  
  21.  
  22. int main() {
  23.     int n;
  24.     cin >> n;
  25.     vector<int> v(2 * n);
  26.     for (int i = n - 1; i < 2 * n - 1; ++i) {
  27.         cin >> v[i];
  28.     }
  29.     for (int i = 2 * n - 2; i > 0; --i) {
  30.         v[(i + 1) / 2 - 1] += v[i];
  31.     }
  32.     int m;
  33.     cin >> m;
  34.     for (int i = 0; i < m; ++i) {
  35.         int L, R;
  36.         cin >> 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