Josif_tepe

Untitled

Mar 16th, 2026
84
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.20 KB | None | 0 0
  1. #include <iostream>
  2. #include <vector>
  3. using namespace std;
  4. typedef long long ll;
  5. const int maxn = 2e5 + 10;
  6. int n;
  7. int a[maxn];
  8. ll segment_tree[3 * maxn];
  9.  
  10. ll merge_nodes(ll A, ll B) {
  11.     return A + B;
  12. }
  13.  
  14. void build_tree(int L, int R, int node) {
  15.     if(L == R) {
  16.         segment_tree[node] = a[L];
  17.     }
  18.     else {
  19.         int middle = (L + R) / 2;
  20.         build_tree(L, middle, 2 * node);
  21.         build_tree(middle + 1, R, 2 * node + 1);
  22.         segment_tree[node] = merge_nodes(segment_tree[2 * node], segment_tree[2 * node + 1]);
  23.     }
  24. }
  25.  
  26.  
  27. ll query(int i, int j, int L = 0, int R = n - 1, int node = 1) {
  28.     if(R < i or j < L) {
  29.         return 0;
  30.     }
  31.     if(i <= L and R <= j) {
  32.         return segment_tree[node];
  33.     }
  34.    
  35.     int middle = (L + R) / 2;
  36.     return merge_nodes(query(i, j, L, middle, 2 * node), query(i, j, middle + 1, R, 2 * node + 1));
  37. }
  38.  
  39. int main() {
  40.     int k;
  41.     cin >> n >> k;
  42.    
  43.     for(int i = 0; i < n; i++) {
  44.         cin >> a[i];
  45.     }
  46.    
  47.     build_tree(0, n - 1, 1);
  48.    
  49.     for(int i = 0; i < k; i++) {
  50.         int x, y;
  51.         cin >> x >> y;
  52.        
  53.         cout << query(x - 1, y - 1) << endl;
  54.     }
  55.    
  56.     return 0;
  57. }
  58.  
Advertisement
Add Comment
Please, Sign In to add comment