Advertisement
hurmawe

1 задача

Feb 6th, 2021
127
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.28 KB | None | 0 0
  1. #include < iostream>
  2. #include <vector>
  3.  
  4. using namespace std;
  5.  
  6. vector<int> build(vector<int> array,const int& lenght)
  7. {
  8.     if (lenght % 2 == 0)
  9.     {
  10.         vector<int> output(lenght * 2 - 1);
  11.         for (int i = 0; i < lenght; i++)
  12.         {
  13.             output[lenght - 1 + i] = array[i];
  14.         }
  15.         for (int i = lenght - 2; i >= 0; i--)
  16.         {
  17.             output[i] = output[i * 2 + 1] + output[i * 2 + 2];
  18.         }
  19.         return output;
  20.     }
  21.     else
  22.     {
  23.         vector<int> output((lenght+1) * 2 - 1);
  24.         for (int i = 0; i < lenght; i++)
  25.         {
  26.             output[lenght + i] = array[i];
  27.         }
  28.         for (int i = lenght - 1; i >= 0; i--)
  29.         {
  30.             output[i] = output[i * 2 + 1] + output[i * 2 + 2];
  31.         }
  32.         return output;
  33.     }
  34. }
  35.  
  36. int sum(int l, int r, int x, int lx, int rx,const vector<int>& array)
  37. {
  38.     if (l >= rx or lx >= r)
  39.         return 0;
  40.     if (lx >= l and rx <= r)
  41.         return array[x];
  42.     int m = (lx + rx) / 2;
  43.     int sl = sum(l, r, 2 * x + 1, lx, m, array);
  44.     int sr = sum(l, r, 2 * x + 2, m, rx, array);
  45.     return sl + sr;
  46. }
  47. int main()
  48. {
  49.     int x;
  50.     int number;
  51.     vector<int> array;
  52.     cin >> number;
  53.     for(int i =0;i<number; i++)
  54.     {
  55.         cin >> x;
  56.         array.push_back(x);
  57.     }
  58.     cout << endl << endl;
  59.     vector<int> a = build(array, array.size());
  60.  
  61.     int left;
  62.     int right;
  63.     int node;
  64.     cin >> left >> right >> node;
  65.     cout << sum(left,right,node,0,a.size(),a);
  66. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement