Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <vector>
- using namespace std;
- class Cube{
- public:
- int front1, up, left;
- int value;
- Cube(int frontCube, int upCube, int leftCube, int valueCell){
- front1 = frontCube;
- up = upCube;
- left = leftCube;
- value = valueCell;
- }
- };
- int main()
- {
- int n, m;
- cin >> n >> m;
- int a, b, c, h, ma = 9999999999;
- cin >> a >> b >> c;
- vector<vector<Cube> > dp(m, vector<Cube>(n, Cube(0, 0, 0, 0)));
- dp[m - 1][0] = Cube(c, a, b, a);
- for(int i = 1; i < n; i++){
- Cube current = dp[m - 1][i - 1];
- dp[m - 1][i] = Cube(current.front1, current.left, 7 - current.up, current.value + current.left);
- }
- for(int i = m - 2; i >= 0; i--){
- Cube current = dp[i + 1][0];
- dp[i][0] = Cube(7 - current.up, current.front1, current.left, current.value + current.front1);
- }
- for(int i = m - 2; i >= 0; i--){
- for(int j = 1; j < n; j++){
- Cube current1 = dp[i][j - 1];
- Cube current2 = dp[i + 1][j];
- if(current1.value + current1.left < current2.value + current2.front1){
- dp[i][j] = Cube(current1.front1, current1.left, 7 - current1.up, current1.value + current1.left);
- }else{
- dp[i][j] = Cube(7 - current2.up, current2.front1, current2.left, current2.value + current2.front1);
- }
- }
- }
- cout << dp[0][n - 1].value;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement