#include <iostream>
#include <vector>
class Model {
public:
std::vector<int> data;
void save(std::ostream& out) const;
void load(std::istream& in);
};
void Model::save(std::ostream& out) const {
out << data.size();
for (auto elem : data)
out << " " << elem;
}
void Model::load(std::istream& in) {
size_t sz;
in >> sz;
data.resize(sz);
for (size_t i = 0; i != sz; ++i)
in >> data[i];
}
J. Save & Load ПИ С++ 23
Не решена
Ограничение времени 1 секунда
Ограничение памяти 64 Мб
Ввод стандартный ввод или input.txt
Вывод стандартный вывод или output.txt
Миша увлекается машинным обучением. Он обучил новейшую нейросетевую модель, распознающую лица на фотографии. Модель представляет из себя большой массив чисел, равномерно распределенных в диапазоне типа int (это веса отдельных нейронов в сети). Мише необходимо уметь сохранять модель на диск и считывать с диска. Он даже написал очень простой класс для хранения модели. Код доступен в общем архиве условий задач справа сверху. Однако простейший тест — заполнить большой массив случайными числами, записать его, потом считать и сравнить с тем, что было, — выполняется больше секунды, да и файл получается достаточно большим. Поможете Мише ускорить запись и загрузку, а заодно и уменьшить размер файла?
Примечания
Перепишите функции save и load, чтобы ускорить процесс и по возможности уменьшить объём данных. Вы можете написать эти функции как хотите, но требуется, чтобы функция load восстанавливала исходные данные по результату, записанному save. В частности, load должна очищать данные модели, если они до этого как-то уже были заполнены. Мы будем тестировать Вашу программу примерно так. Код доступен в общем архиве условий задач справа сверху.
В проверяющую систему надо сдать весь переписанный класс Model целиком.
Ответ
Язык
(make) Clang 18.1.8