Помогите с задачей на С++ пожалуйста
Кто поможет с задачей буду очень благодарен ! Заранее спасибо !
Задача:
Дана квадратная матрица A порядка M. Начиная с элемента A1,1, вывести ее элементы следующим образом («уголками»): все элементы первого столбца; элементы последней строки, кроме первого (уже выведенного) элемента; оставшиеся элементы второго столбца; оставшиеся элементы предпоследней строки и т.д.; последним выводится элемент A1,M.
Формат ввода
Сперва вводится значение M, определяющее количество строк и столбцов матрицы. Затем построчно вводятся все M×M элементов матрицы. Значения элементов матрицы могут быть вещественными.
Формат вывода
Вывести все M×M элементов матрицы в порядке, определенный условиями задания.
Пример 1
Ввод
3
1 2 3
4 5 6
7 8 9
Вывод
1 4 7 8 9 2 5 6 3
Пример 2
Ввод
4
1 2 3 4
5 6 7 8
9 10 11 12
13 14 15 16
Вывод
1 5 9 13 14 15 16 2 6 10 11 12 3 7 8 4
#include <iostream>
using namespace std;
int main() {
size_t n;
cin >> n;
auto mx = new int* [n];
for (size_t i = 0; i < n; ++i) {
mx[i] = new int[n];
for (size_t j = 0; j < n; ++j) {
cin >> mx[i][j];
}
}
puts("");
for (size_t j = 0; j < n; ++j) {
size_t i = 0;
while (i < n - j) {
cout << mx[i][j] << ' ';
++i;
}
--i;
for (size_t k = j + 1; k < n; ++k) {
cout << mx[i][k] << ' ';
}
}
puts("");
for (size_t i = 0; i < n; ++i) {
delete[] mx[i];
}
delete[] mx;
} Ошибка на 5 тесте(
#include <iostream>
#include <vector>
using namespace std;
int main()
{
size_t n;
cin >> n;
vector <int> mtrx(n * n);
for (auto& i : mtrx) cin >> i;
putc('\n',stdout);
for (size_t i = 0; i < n; i++) //col
{
for (size_t j = 0; j < n - i; j++) cout << mtrx[j * n + i] << " "; //str
for (size_t j = i + 1; j < n; j++) cout << mtrx[(n - i - 1) * n + j] << " "; //col
}
} Ошибка на 5 тесте(