1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
|
std::tuple<int, int, int> Rec(const std::vector<int>& price, int begin, int end, int diff) {
if (begin >= end) {
return std::tuple<int, int, int>(begin, end, 0);
}
if (begin + 1 == end) {
return std::tuple<int, int, int>(begin, end, (price[end] - price[begin]));
}
int center = (begin + (end - begin) / 2);
std::tuple<int, int, int> left;
std::tuple<int, int, int> right;
//odd
if (((end - begin) % 2) == 0) {
left = Rec(price, begin, center - 1, diff);
right = Rec(price, center, end, diff);
}
//even
else {
left = Rec(price, begin, center, diff);
right = Rec(price, center + 1, end, diff);
}
...
|