Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <cstdlib>
- #include <cstdio>
- #include <climits>
- #include <algorithm>
- using namespace std;
- int main() {
- int n, m;
- scanf("%d %d", &n, &m);
- int tab[1000][1002] = {};
- for (int i = 0; i < m; i++) {
- tab[i][0] = INT_MAX;
- tab[i][n + 1] = INT_MAX;
- }
- for (int i = 1; i < n + 1; i++)
- for (int j = 0; j < m; j++)
- scanf("%d", &tab[j][i]);
- for (int i = 1; i < m; i++)
- for (int j = 1; j < n + 1; j++)
- tab[i][j] += min(min(tab[i - 1][j - 1], tab[i - 1][j]), tab[i - 1][j + 1]);
- int result[1000] = {};
- int minimum = INT_MAX;
- for (int i = 1; i < n + 1; i++)
- if (minimum > tab[m - 1][i]) {
- minimum = tab[m - 1][i];
- result[m - 1] = i - 1;
- }
- for (int i = m - 2; i >= 0; i--) {
- minimum = INT_MAX;
- for (int j = result[i + 1]; j < result[i + 1] + 3; j++) {
- if (minimum > tab[i][j]) {
- minimum = tab[i][j];
- result[i] = j-1;
- }
- }
- }
- for (int i = 0; i < m; i++)
- printf("%d ", result[i]);
- printf("\n");
- return 0;
- };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement