Advertisement
Guest User

Untitled

a guest
Feb 28th, 2020
112
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.44 KB | None | 0 0
  1. #include <iostream>
  2. #include <vector>
  3.  
  4. using namespace std;
  5.  
  6. class Cube{
  7. public:
  8. int front1, up, left;
  9. int value;
  10.  
  11. Cube(int frontCube, int upCube, int leftCube, int valueCell){
  12. front1 = frontCube;
  13. up = upCube;
  14. left = leftCube;
  15. value = valueCell;
  16. }
  17. };
  18.  
  19. int main()
  20. {
  21. int n, m;
  22. cin >> n >> m;
  23. int a, b, c, h, ma = 9999999999;
  24. cin >> a >> b >> c;
  25. vector<vector<Cube> > dp(m, vector<Cube>(n, Cube(0, 0, 0, 0)));
  26. dp[m - 1][0] = Cube(c, a, b, a);
  27. for(int i = 1; i < n; i++){
  28. Cube current = dp[m - 1][i - 1];
  29. dp[m - 1][i] = Cube(current.front1, current.left, 7 - current.up, current.value + current.left);
  30. }
  31. for(int i = m - 2; i >= 0; i--){
  32. Cube current = dp[i + 1][0];
  33. dp[i][0] = Cube(7 - current.up, current.front1, current.left, current.value + current.front1);
  34. }
  35. for(int i = m - 2; i >= 0; i--){
  36. for(int j = 1; j < n; j++){
  37. Cube current1 = dp[i][j - 1];
  38. Cube current2 = dp[i + 1][j];
  39. if(current1.value + current1.left < current2.value + current2.front1){
  40. dp[i][j] = Cube(current1.front1, current1.left, 7 - current1.up, current1.value + current1.left);
  41. }else{
  42. dp[i][j] = Cube(7 - current2.up, current2.front1, current2.left, current2.value + current2.front1);
  43. }
  44. }
  45. }
  46. cout << dp[0][n - 1].value;
  47. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement