Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //общее количество пустышек
- vector<int> found_number_zero(const vector<bool>& array, const int& lenght)
- {
- if (lenght % 2 == 0)
- {
- vector<int> output(lenght * 2 - 1);
- for (int i = 0; i < lenght; i++)
- {
- output[lenght - 1 + i] = !(array[i]);
- }
- for (int i = lenght - 2; i >= 0; i--)
- {
- output[i] = output[i * 2 + 1] + output[i * 2 + 2];
- }
- return output;
- }
- else
- {
- vector<int> output((lenght + 1) * 2 - 1);
- for (int i = 0; i < lenght; i++)
- {
- output[lenght + i] = !(array[i]);
- }
- for (int i = lenght - 1; i >= 0; i--)
- {
- output[i] = output[i * 2 + 1] + output[i * 2 + 2];
- }
- return output;
- }
- }
- // количество пустышек на отрезке
- int found_number_zero_on_segment(const int l, const int r, const int x, const int lx, const int rx, const vector<int>& array)
- {
- if (l >= rx or lx > r)
- return 0;
- if (lx >= l and rx <= r)
- return array[x];
- int m = (lx + rx) / 2;
- int sl = sum(l, r, 2 * x + 1, lx, m, array);
- int sr = sum(l, r, 2 * x + 2, m, rx, array);
- return sl + sr;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement