Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <queue>
- #include <vector>
- int foo (int **X, int i, int j, int M, int N, int *arr, int d)
- {
- std::cout << "d = " << d << std::endl;
- int this_d_max = arr[d];
- int flag = 0;
- if ((i >= M) || (j >= N))
- {
- return 0;
- }
- if (X[i][j] > arr[d])
- {
- arr[d] = X[i][j];
- for (int k = d + 1; k < M + N; k++)
- {
- arr[k] = -1;
- }
- }
- else
- {
- return -1;
- }
- flag |= foo (X, i + 1, j, M, N, arr, d + 1);
- flag |= foo (X, i, j + 1, M, N, arr, d + 1);
- if (flag == 1)
- {
- arr[d] = this_d_max;
- }
- return 0;
- }
- int main (void)
- {
- int N, M;
- std::cin >> M;
- std::cin >> N;
- int *arr;
- int **X;
- X = new int * [M];
- for (int i = 0; i < M; i++)
- {
- X[i] = new int[N];
- }
- arr = new int [M + N];
- for (int i = 0; i < M + N; i++)
- {
- arr[i] = -1;
- }
- for (int i = 0; i < M; i++)
- {
- for (int j = 0; j < N; j++)
- {
- std::cin >> X[i][j];
- }
- }
- for (int i = 0; i < M; i++)
- {
- for (int j = 0; j < N; j++)
- {
- std::cout << X[i][j] << " ";
- }
- std::cout << std::endl;
- }
- foo (X, 0, 0, M, N, arr, 0);
- for (int i = 0; i < N + M; i++)
- {
- std::cout << arr[i];
- }
- std::cout << std::endl;
- for (int i = 0; i < M; i++)
- {
- delete X[i];
- }
- delete X;
- delete arr;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement