Вставка и поиск в дереве сегментов

Итак, проблема состоит в следующем: у нас есть массив, и мы должны выполнить 2 типа операций:

1) Добавление значения v на сегменте [x, y]

2) Нахождение суммы на отрезке [x, y]

Я искал ответ, но ничего не мог найти, если у вас есть полезные ссылки или советы, я буду благодарен.

-5

Решение

Оба назначения могут быть выполнены с использованием стандартных алгоритмов и лямбда-выражений или, что фактически эквивалентно использованию диапазона, основанного на выражении.

Подход с использованием алгоритмов и лямбда-выражений

#include <algorithm>

std::for_eqch( std::begin( a ), std:;end( a ),
[=]( int &z ) { if ( x <= z && z <= y ) z += v; } );

#include <numeric>

int sum = std::accumulate( std::begin( a ), std::edn( a ), 0,
[=]( int acc, int z ) { return acc + ( x <= z && z <= y ? z : 0 ); } );

Подход с использованием диапазона на основе

for ( int &z : a )
{
if ( x <= z && z <= y ) z += v;
}

int sum = 0;

for ( int z : a )
{
if ( x <= z && z <= y ) sum += z;
}

На самом деле вы можете использовать любую форму цикла для выполнения заданий. 🙂

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]