Advertisement
Guest User

wik

a guest
Apr 20th, 2018
71
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.17 KB | None | 0 0
  1. #include <cstdlib>
  2. #include <cstdio>
  3. #include <climits>
  4. #include <algorithm>
  5.  
  6. using namespace std;
  7.  
  8. int main() {
  9. int n, m;
  10. scanf("%d %d", &n, &m);
  11. int tab[1000][1002] = {};
  12.  
  13. for (int i = 0; i < m; i++) {
  14. tab[i][0] = INT_MAX;
  15. tab[i][n + 1] = INT_MAX;
  16. }
  17.  
  18. for (int i = 1; i < n + 1; i++)
  19. for (int j = 0; j < m; j++)
  20. scanf("%d", &tab[j][i]);
  21.  
  22. for (int i = 1; i < m; i++)
  23. for (int j = 1; j < n + 1; j++)
  24. tab[i][j] += min(min(tab[i - 1][j - 1], tab[i - 1][j]), tab[i - 1][j + 1]);
  25.  
  26. int result[1000] = {};
  27.  
  28. int minimum = INT_MAX;
  29. for (int i = 1; i < n + 1; i++)
  30. if (minimum > tab[m - 1][i]) {
  31. minimum = tab[m - 1][i];
  32. result[m - 1] = i - 1;
  33. }
  34.  
  35. for (int i = m - 2; i >= 0; i--) {
  36. minimum = INT_MAX;
  37. for (int j = result[i + 1]; j < result[i + 1] + 3; j++) {
  38. if (minimum > tab[i][j]) {
  39. minimum = tab[i][j];
  40. result[i] = j-1;
  41. }
  42. }
  43. }
  44.  
  45. for (int i = 0; i < m; i++)
  46. printf("%d ", result[i]);
  47.  
  48. printf("\n");
  49. return 0;
  50. };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement