// 教材参考实现；编译运行它不能代替学习者独立完成 M1。
// 输入合同：构造期间输入有效，最多 10 项，每项在 0–100 内。
// textbook:begin implementation
#include <cstddef>
#include <iostream>
#include <span>
#include <vector>

class BatchSummary {
    std::size_t count_;
    int total_;

public:
    explicit BatchSummary(std::span<const int> input)
        : count_{input.size()}, total_{0} {
        for (int value : input) {
            total_ += value;
        }
    }

    std::size_t count() const {
        return count_;
    }

    int total() const {
        return total_;
    }
};
// textbook:end implementation

bool check(const BatchSummary& summary, std::size_t count, int total) {
    std::cout << summary.count() << ' ' << summary.total() << '\n';
    return summary.count() == count && summary.total() == total;
}

int main() {
    {
        std::vector<int> values;
        const BatchSummary summary{std::span<const int>{values}};
        if (!check(summary, 0, 0)) {
            return 1;
        }
    }
    {
        std::vector<int> values{5};
        const BatchSummary summary{std::span<const int>{values}};
        if (!check(summary, 1, 5)) {
            return 1;
        }
    }
    {
        std::vector<int> values{2, 0, 3};
        const BatchSummary summary{std::span<const int>{values}};
        if (!check(summary, 3, 5)) {
            return 1;
        }
    }
    {
        std::vector<int> values{0, 0};
        const BatchSummary summary{std::span<const int>{values}};
        if (!check(summary, 2, 0)) {
            return 1;
        }
    }
    {
        std::vector<int> values{100, 100};
        const BatchSummary summary{std::span<const int>{values}};
        if (!check(summary, 2, 200)) {
            return 1;
        }
    }
    return 0;
}
