forked from Neytrinoo/mohican
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathbalancing_to_add.cpp
32 lines (25 loc) · 985 Bytes
/
balancing_to_add.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
//
// Created by andrey on 16.05.2021.
//
#include <vector>
#include <cstdlib>
int start_balancing(std::vector<int> upstream) { // upstream[0] = 0
for (int i = 1; i < upstream.size(); ++i) {
upstream[i] = upstream[i] + upstream[i-1];
}
int sum = upstream[upstream.size() - 1];
int random_variable = std::rand() % sum;
int number_left_element = 0;
int number_right_element = upstream.size();
int middle;
while(number_right_element >= number_left_element) {
middle = (number_left_element + number_right_element) / 2;
if (upstream[middle] > random_variable) {
number_right_element--;
} else if (upstream[middle] < random_variable) {
number_left_element++;
} else return number_left_element = middle;
}
return number_left_element--;
}
//TODO: Или сразу добавлять вектор сумм, или это делать внутри функции как сейчас