Дана целочисленная матрица размером \(n\times m\). Необходимо вывести транспонированную матрицу, то есть такую, в которой строки становятся столбцами, а столбцы — строками.
Требования к реализации. Для хранения данных используйте динамически выделяемый двумерный массив типа int**.
Размеры матрицы заранее неизвестны, поэтому статические массивы использовать нельзя.
Память под сам массив и под строки матрицы должна выделяться с помощью оператора new.
После завершения работы программы вся выделенная память должна быть освобождена с помощью delete[].
Первая строка входных данных содержит числа \(n\) и \(m\), при этом \(nm\le 10^5\). Следующие \(n\) строк содержат по \(m\) целых чисел через пробел.
Программа должна вывести \(m\) строк по \(n\) чисел в каждой, разделяя их пробелами — содержимое транспонированного массива.
| Ввод | Вывод |
|---|---|
3 4 11 12 13 14 21 22 23 24 31 32 33 34 |
11 21 31 12 22 32 13 23 33 14 24 34 |
Даны \(n\) одномерных массивов. Необходимо вывести их в обратном порядке: сначала последний массив, потом предпоследний и так далее, при этом элементы каждого массива также выводятся в обратном порядке.
Требования к реализации. Для хранения данных используйте динамически выделяемый двумерный массив типа int**.
Для каждого одномерного массива выделяйте память в необходимом количестве.
После завершения работы программы вся выделенная память должна быть освобождена с помощью delete[].
Первая строка входных данных содержит число \(n\), (\(1\le n\le 10^5\)) — количество массивов. Следующие \(n\) строк содержат описание каждого массива. Описание массива начинается с числа \(s_i\ge 1\) — количество элементов в \(i\)-м массиве. Далее идут \(s_i\) чисел через пробел — элементы одномерного массива. Сумма всех \(s_i\) не превосходит \(2\times 10^5\).
Программа должна вывести \(n\) строк. В каждой строке выведите элементы массива в обратном порядке, разделяя их пробелами. Количество элементов в строке выводить не нужно. Массивы должны выводиться в обратном порядке относительно ввода.
| Ввод | Вывод |
|---|---|
3 4 1 2 3 4 2 10 20 3 5 6 7 |
7 6 5 20 10 4 3 2 1 |
Вам необходимо реализовать 100 стеков, поддерживающих операции добавления и удаления элементов. При удалении элемента из стека должно возвращаться его значение, либо сообщаться о том, что операция некорректна (стек пуст).
Требования к реализации. Нельзя использовать никакие контейнеры из стандартной библиотеки C++ (vector, stack, deque, etc). Используете массивы и храните количество элементов в каждом стеке.
Первая строка входных данных содержит число \(n\), (\(1\le n\le 1000\)) — количество операций, выполняемых со стеками. Следующие \(n\) строк содержат описание операций. Каждая строка начинается с числа \(s\) (\(1\le |s| \le 100\)), задающего номер стека и тип операции. Если \(s \gt 0\), то в стек с номером \(s\) добавляется целое положительное число, которое записано в этой строке через пробел. Если \(s \lt 0\), то из стека с номером \(-s\) удаляется последнее добавленное в него и не удалённое ранее число.
Для каждой операции удаления числа из стека выведите удаляемое число. Если операция некорректна, то есть стек пуст, выведите число \(-1\).
| Ввод | Вывод |
|---|---|
6 1 57 100 15 1 179 -100 -1 -100 |
15 179 -1 |
Вам необходимо реализовать 1000 стеков, поддерживающих операции добавления и удаления элементов. При удалении элемента из стека должно возвращаться его значение, либо сообщаться о том, что операция некорректна (стек пуст).
Требования к реализации. Нельзя использовать никакие контейнеры из стандартной библиотеки C++ (vector, stack, deque, etc). Используете массивы и храните количество элементов в каждом стеке. В этой задаче количество операций велико, поэтому память для каждого стека нужно будет выделять динамически, увеличивая (удваивая) размер памяти, выделенной стеку, при необходимости.
Первая строка входных данных содержит число \(n\), (\(1\le n\le 10^5\)) — количество операций, выполняемых со стеками. Следующие \(n\) строк содержат описание операций. Каждая строка начинается с числа \(s\) (\(1\le |s| \le 1000\)), задающего номер стека и тип операции. Если \(s \gt 0\), то в стек с номером \(s\) добавляется целое положительное число, которое записано в этой строке через пробел. Если \(s \lt 0\), то из стека с номером \(-s\) удаляется последнее добавленное в него и не удалённое ранее число.
Для каждой операции удаления числа из стека выведите удаляемое число. Если операция некорректна, то есть стек пуст, выведите число \(-1\).
| Ввод | Вывод |
|---|---|
6 1 57 100 15 1 179 -100 -1 -100 |
15 179 -1 |