sort(subset2.begin(), subset2.end());
long long int v = 0;
for (int i = 0; i < subset1.size(); i++)
v += upper_bound(subset2.begin(), subset2.end(), (k - subset1[i])) - subset2.begin();
Где subset1 и subset2 - это вектора подмножеств первой и второй половины множества соответственно.
Их я находил таким образом:
subset1.resize(1 << (vect1.size()));
for (int i = 1; i < (1 << vect1.size()); i++)
subset1[i] = subset1[i & (i - 1)] + vect1[__builtin_ctz(i)];
size_t size1 = 1 << (vect1.size());
subset1.resize(size1);
for (int i = 1; i < size1; i++)
subset1[i] = subset1[i & (i - 1)] + vect1[__builtin_ctz(i)];
sort(subset2.begin(), subset2.end());
long long int v = 0;
for (int i = 0; i < size1; i++)
...
Вы каждый раз считаете результат одного и того же выражения, а нужно считать один раз и сохранить его в каком то обьекте.
Подозреваю: что вместо вектора лучше подойдет multiset
.
Виртуальный выделенный сервер (VDS) становится отличным выбором
Начал копать библиотеку уроков по тому как работает OpenGL и не могу разобраться с одним методомСсылка на курс: https://github
Интересует, как можно получить доступ к элементу map'ы с индексом iНо! К примеру, при перебирании map'ы при помощи итерататора она отсортирована...
Когда пытаюсь прочитать значение карты map в методе класса с помощью map[key], то получаю непонятную ошибку