Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<bits/stdc++.h>
- using namespace std;
- int f(vector<int> &v, int L, int R, int now, int l, int r) {
- if (l >= L && r <= R) {
- return v[now];
- } else if (l > R || r < L) {
- return 0;
- } else {
- int m = (r + l) / 2;
- int f1 = f(v, L, R, 2 * now + 1, l, m);
- int f2 = f(v, L, R, 2 * now + 2, m + 1, r);
- return f1 + f2;
- }
- }
- int main() {
- int n;
- cin >> n;
- int b = (int)ceil(log2(n));
- int a = pow(2, b);
- vector<int> v(2 * a);
- for (int i = a - 1; i < a - 1 + n; ++i) {
- cin >> v[i];
- }
- n = a;
- for (int i = 2 * a - 2; i > 0; --i) {
- v[(i + 1) / 2 - 1] += v[i];
- }
- int m;
- cin >> m;
- for (int i = 0; i < m; ++i) {
- int L, R;
- cin >> L >> R;
- --L; --R;
- cout << f(v, L, R, 0, 0, n - 1);
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement