- #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==