Advertisement
hwanil

Untitled

Feb 2nd, 2018
86
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.73 KB | None | 0 0
  1. #include<stdio.h>
  2. #include<memory.h>
  3. #define EAST 1
  4. #define WEST 3
  5. #define NORTH 0
  6. #define SOUTH 2
  7. using namespace std;
  8.  
  9. int Y, X,startY,startX,K;
  10. int map[21][21];
  11. int dice[7];
  12. int dy[] = { -1,0,1,0 };
  13. int dx[] = { 0,1,0,-1 };
  14. void rotate(int dir) {
  15.     int temp[7];
  16.     memcpy(temp, dice, sizeof(dice));
  17.     if (dir == EAST) {
  18.         dice[3] = temp[1];
  19.         dice[6] = temp[3];
  20.         dice[4] = temp[6];
  21.         dice[1] = temp[4];
  22.     }
  23.     else if (dir == WEST) {
  24.         dice[1] = temp[3];
  25.         dice[3] = temp[6];
  26.         dice[6] = temp[4];
  27.         dice[4] = temp[1];
  28.     }
  29.     else if (dir == NORTH) {
  30.         dice[1] = temp[5];
  31.         dice[5] = temp[6];
  32.         dice[6] = temp[2];
  33.         dice[2] = temp[1];
  34.     }
  35.     else {
  36.         dice[5] = temp[1];
  37.         dice[6] = temp[5];
  38.         dice[2] = temp[6];
  39.         dice[1] = temp[2];
  40.     }
  41. }
  42. int changeOrder(int order) {
  43.     int ret = 0;
  44.     if (order == 1) {
  45.         ret = EAST;
  46.     }
  47.     else if (order == 2) {
  48.         ret = WEST;
  49.     }
  50.     else if (order == 3) {
  51.         ret = NORTH;
  52.     }
  53.     else {
  54.         ret = SOUTH;
  55.     }
  56.     return ret;
  57. }
  58. int main() {
  59.    
  60.     scanf("%d %d %d %d %d", &Y, &X, &startY, &startX, &K);
  61.    
  62.     for (int i = 0; i < Y; i++) {
  63.         for (int j = 0; j < X; j++) {
  64.             scanf("%d", &map[i][j]);
  65.         }
  66.     }
  67.  
  68.  
  69.     for (int i = 0; i < K; i++) {
  70.         int order;
  71.         scanf("%d", &order);
  72.        
  73.        
  74.  
  75.         if (startY + dy[changeOrder(order)] >= 0 && startY + dy[changeOrder(order)] < Y
  76.             && startX + dx[changeOrder(order)] >= 0 && startX + +dx[changeOrder(order)] < X ) {
  77.            
  78.             startY = startY + dy[changeOrder(order)];
  79.             startX = startX + dx[changeOrder(order)];
  80.  
  81.             rotate(changeOrder(order));
  82.             if (map[startY][startX] == 0) {
  83.                 map[startY][startX] = dice[6];
  84.             }
  85.             else {
  86.                 dice[6] = map[startY][startX];
  87.                 map[startY][startX] = 0;
  88.             }
  89.  
  90.             printf("%d\n",dice[1]);
  91.         }
  92.     }
  93.  
  94.     return 0;
  95. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement