Advertisement
Guest User

Untitled

a guest
Jan 23rd, 2017
76
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.16 KB | None | 0 0
  1. #include <iostream>
  2. #include <vector>
  3. using namespace std;
  4. int main () {
  5. int n,m,minl=1000000000,x,ans;
  6. cin >> n >> m;
  7. vector <vector <int> > a(n,vector<int> (m));
  8. vector <vector <int> > cost(n,vector<int> (m));
  9. for (int i=0;i<n;i++)
  10. for (int j=0;j<m;j++)
  11. cin >> a[i][j];
  12.  
  13. for (int i=0;i<n;i++)
  14. cost[i][m-1]=a[i][m-1];
  15. for (int i=n-2;i>0;i--)
  16. for (int j = 0; j < m; j++) {
  17. cost[i][j]=cost[i][j-1];
  18. if (j!=0)
  19. cost[i][j]=min(cost[i][j],cost[i-1][j-1]);
  20. if (j+1!=m)
  21. cost[i][j]=min(cost[i][j],cost[i-1][j+1]);
  22. if (i==0 && minl>cost[i][j]) {
  23. minl=cost[i][j];
  24. x=i;
  25. }
  26. }
  27. ans=minl;
  28. for (int i=1;i<n;i++) {
  29. cout << x+1 << " ";
  30. minl=cost[i][x];
  31. int b=x;
  32. if (x!=0 && minl>cost[i][x-1]) {
  33. minl=cost[i][x-1];
  34. b=x-1;
  35. }
  36. if (x!=m-1 && minl>cost[i][x+1]) {
  37. minl=cost[i][x+1];
  38. b=x+1;
  39. }
  40. x=b;
  41. }
  42. cout << x+1 << endl << ans;
  43.  
  44. return 0;
  45. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement