Что выведет код Middle Алгоритмы STL и ranges обновлено

Что выведет: accumulate, count_if, partial_sum

Вопрос

Что выведет программа (C++20, g++ 14)? Каждый вывод с новой строки, как в консоли.

#include <algorithm>
#include <functional>
#include <iostream>
#include <numeric>
#include <vector>

int main() {
    std::vector<double> d{0.5, 0.5, 1.5};
    std::cout << std::accumulate(d.begin(), d.end(), 0) << ' '
              << std::accumulate(d.begin(), d.end(), 0.0) << '\n';
    std::vector<int> v{5, 1, 4, 2, 3};
    std::sort(v.begin(), v.end(), std::greater<>());
    std::vector<int> p(v.size());
    std::partial_sum(v.begin(), v.end(), p.begin());
    for (int x : p) std::cout << x << ' ';
    std::cout << '\n';
    auto it = std::lower_bound(p.begin(), p.end(), 12);
    std::cout << (it - p.begin()) << ' '
              << std::count_if(v.begin(), v.end(), [](int x) { return x % 2; }) << '\n';
}

Попробуйте сами

Напишите, что выведет код: каждый вывод с новой строки.

Показать ответ и разбор

Коротко

Код выведет: 1 2.5, 5 9 12 14 15, 2 3. С начальным 0 аккумулятор int: 0.5 отбрасывается дважды, затем 0 + 1.5 даёт 1.

Что выведет

1 2.5
5 9 12 14 15
2 3

Разбор

С начальным 0 аккумулятор int: 0.5 отбрасывается дважды, затем 0 + 1.5 даёт 1. С 0.0 сумма 2.5. После сортировки по убыванию 5 4 3 2 1, префиксные суммы 5 9 12 14 15. Первый элемент ≥ 12 на индексе 2. Нечётных чисел три: 5, 3, 1.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.