Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #pragma comment(linker, "/stack:200500500")
- #include <iostream>
- #include <unordered_map>
- #include <vector>
- 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;
- vector<int> v(2 * n);
- for (int i = n - 1; i < 2 * n - 1; ++i) {
- cin >> v[i];
- }
- for (int i = 2 * n - 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;
- cout << f(v, L, R, 0, 0, n - 1);
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement