Условие
Реализуйте класс Matrix, который хранит число строк, число столбцов и указатель на один динамический массив из rows × columns целых элементов. Конструктор Matrix(int rows, int columns) выделяет массив и заполняет его нулями. Деструктор освобождает память. Оба размера положительны.
Предусмотрите геттеры int rows() const, int columns() const, методы bool set(int row, int column, int value), bool get(int row, int column, int &value) const и long long row_sum(int row) const. Храните строки последовательно в одном массиве. При недопустимых индексах set и get возвращают false, сохраняя состояние и выходной параметр. Метод row_sum вызывается только для допустимой строки.
В main создайте матрицу, заполните её через set, выведите суммы строк, затем выполните запросы чтения через get. Запретите копирование объекта, как указано в общих требованиях блока.
Ограничения
Время: 2 секунды. Память: 64 МиБ. Вывод: до 2 МиБ. Язык: C++17.
Входные данные
В первой строке вводятся R и C. Следующие R строк содержат по C целых чисел. Затем вводится Q, после него — Q строк с парами row column. Ограничения: 1 ≤ R, C ≤ 200, −10⁶ ≤ aᵢⱼ ≤ 10⁶, 1 ≤ Q ≤ 1000, −1 ≤ row ≤ R, −1 ≤ column ≤ C. Индексация начинается с нуля.
Выходные данные
В первой строке выведите суммы всех строк через пробел. Затем для каждого запроса выведите значение элемента либо ERROR, каждый ответ с новой строки.
Примеры
2 2 1 2 3 4 2 0 1 1 0
3 7 2 3
1 1 -7 3 0 0 -1 0 0 1
-7 -7 ERROR ERROR
2 3 -1 0 1 1000000 1000000 1000000 1 1 2
0 3000000 1000000