#include <iostream>
#include <vector>
#include <cstdlib>  // برای استفاده از rand() و srand()
#include <ctime>    // برای استفاده از time()

using namespace std;

int main() {
    int rows, cols;

    // دریافت اندازه ماتریس از کاربر
    cout << "Enter number of rows: ";
    cin >> rows;
    cout << "Enter number of columns: ";
    cin >> cols;

    // تعریف ماتریس
    vector<vector<int>> matrix(rows, vector<int>(cols));
    vector<vector<int>> modifiedMatrix(rows, vector<int>(cols));

    // بذر تصادفی برای تولید اعداد تصادفی
    srand(time(0));

    // پر کردن ماتریس با اعداد تصادفی بین 1 و 100
    for (int i = 0; i < rows; i++) {
        for (int j = 0; j < cols; j++) {
            matrix[i][j] = rand() % 100 + 1;  // عدد تصادفی بین 1 و 100
        }
    }

    // نمایش ماتریس اولیه
    cout << "Original Matrix:" << endl;
    for (int i = 0; i < rows; i++) {
        for (int j = 0; j < cols; j++) {
            cout << matrix[i][j] << " ";
        }
        cout << endl;
    }

    // جایگزینی سطرها و ستون‌ها در صورتی که بزرگتر باشند
    for (int i = 0; i < rows; i++) {
        for (int j = 0; j < cols; j++) {
            // بررسی اینکه سطر یا ستون جدید بزرگتر از مقدار قبلی باشد
            if (matrix[i][j] > matrix[j][i]) {
                modifiedMatrix[i][j] = matrix[i][j];
            } else {
                modifiedMatrix[i][j] = matrix[j][i];
            }
        }
    }

    // نمایش ماتریس تغییر یافته
    cout << "\nModified Matrix:" << endl;
    for (int i = 0; i < rows; i++) {
        for (int j = 0; j < cols; j++) {
            cout << modifiedMatrix[i][j] << " ";
        }
        cout << endl;
    }

    return 0;
}