#include <iostream>
#include <vector>
std::vector<std::vector<int>>
transpose (const std::vector<std::vector<int>>& input)
{
std::vector<std::vector<int>> res(input[0].size(), std::vector<int>(input.size()));
for (std::size_t i = 0; i != input.size(); ++i) {
for (std::size_t j = 0; j != input[i].size(); ++j) {
res[j][i] = input[i][j];
}
}
return res;
}
void print(const std::vector<std::vector<int>>& m)
{
for (std::size_t i = 0; i != m.size(); ++i) {
for (std::size_t j = 0; j != m[i].size(); ++j) {
std::cout << m[i][j] << " ";
}
std::cout << std::endl;
}
}
int main ()
{
int width;
int length;
std::cout << "enter the width followed by the length of the matrix: ";
std::cin >> width >> length;
std::vector<std::vector<int>> input(width, std::vector<int> (length));
std::cout << "enter elements \n";
for (int j = 0; j < length; j++)
for (int i = 0; i < width; i++) {
std::cin >> input[i][j];
}
std::cout << "your matrix is: \n";
print(input);
std::vector<std::vector<int>> output = transpose(input);
std::cout << "the transpose is: \n";
print(output);
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgoKc3RkOjp2ZWN0b3I8c3RkOjp2ZWN0b3I8aW50Pj4KdHJhbnNwb3NlIChjb25zdCBzdGQ6OnZlY3RvcjxzdGQ6OnZlY3RvcjxpbnQ+PiYgaW5wdXQpCnsKICAgIHN0ZDo6dmVjdG9yPHN0ZDo6dmVjdG9yPGludD4+IHJlcyhpbnB1dFswXS5zaXplKCksIHN0ZDo6dmVjdG9yPGludD4oaW5wdXQuc2l6ZSgpKSk7CiAgICBmb3IgKHN0ZDo6c2l6ZV90IGkgPSAwOyBpICE9IGlucHV0LnNpemUoKTsgKytpKSB7CiAgICAgICAgZm9yIChzdGQ6OnNpemVfdCBqID0gMDsgaiAhPSBpbnB1dFtpXS5zaXplKCk7ICsraikgewogICAgICAgICAgICByZXNbal1baV0gPSBpbnB1dFtpXVtqXTsKICAgICAgICB9CiAgICB9CiAgICByZXR1cm4gcmVzOwp9Cgp2b2lkIHByaW50KGNvbnN0IHN0ZDo6dmVjdG9yPHN0ZDo6dmVjdG9yPGludD4+JiBtKQp7CiAgICBmb3IgKHN0ZDo6c2l6ZV90IGkgPSAwOyBpICE9IG0uc2l6ZSgpOyArK2kpIHsKICAgICAgICBmb3IgKHN0ZDo6c2l6ZV90IGogPSAwOyBqICE9IG1baV0uc2l6ZSgpOyArK2opIHsKICAgICAgICAgICAgc3RkOjpjb3V0IDw8IG1baV1bal0gPDwgIiAiOwogICAgICAgIH0KICAgICAgICBzdGQ6OmNvdXQgPDwgc3RkOjplbmRsOwogICAgfQp9CgppbnQgbWFpbiAoKQp7CiAgICBpbnQgd2lkdGg7CiAgICBpbnQgbGVuZ3RoOwoKICAgIHN0ZDo6Y291dCA8PCAiZW50ZXIgdGhlIHdpZHRoIGZvbGxvd2VkIGJ5IHRoZSBsZW5ndGggb2YgdGhlIG1hdHJpeDogIjsKICAgIHN0ZDo6Y2luID4+IHdpZHRoID4+IGxlbmd0aDsKCiAgICBzdGQ6OnZlY3RvcjxzdGQ6OnZlY3RvcjxpbnQ+PiBpbnB1dCh3aWR0aCwgc3RkOjp2ZWN0b3I8aW50PiAobGVuZ3RoKSk7CiAgICBzdGQ6OmNvdXQgPDwgImVudGVyIGVsZW1lbnRzIFxuIjsKICAgIGZvciAoaW50IGogPSAwOyBqIDwgbGVuZ3RoOyBqKyspCiAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCB3aWR0aDsgaSsrKSB7CiAgICAgICAgICAgIHN0ZDo6Y2luID4+IGlucHV0W2ldW2pdOwogICAgICAgIH0KCiAgICBzdGQ6OmNvdXQgPDwgInlvdXIgbWF0cml4IGlzOiBcbiI7CiAgICBwcmludChpbnB1dCk7CiAgICBzdGQ6OnZlY3RvcjxzdGQ6OnZlY3RvcjxpbnQ+PiBvdXRwdXQgPSB0cmFuc3Bvc2UoaW5wdXQpOwoKICAgIHN0ZDo6Y291dCA8PCAidGhlIHRyYW5zcG9zZSBpczogXG4iOwogICAgcHJpbnQob3V0cHV0KTsKICAgIHJldHVybiAwOwp9Cg==