Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<stdio.h>
- #include<memory.h>
- #define EAST 1
- #define WEST 3
- #define NORTH 0
- #define SOUTH 2
- using namespace std;
- int Y, X,startY,startX,K;
- int map[21][21];
- int dice[7];
- int dy[] = { -1,0,1,0 };
- int dx[] = { 0,1,0,-1 };
- void rotate(int dir) {
- int temp[7];
- memcpy(temp, dice, sizeof(dice));
- if (dir == EAST) {
- dice[3] = temp[1];
- dice[6] = temp[3];
- dice[4] = temp[6];
- dice[1] = temp[4];
- }
- else if (dir == WEST) {
- dice[1] = temp[3];
- dice[3] = temp[6];
- dice[6] = temp[4];
- dice[4] = temp[1];
- }
- else if (dir == NORTH) {
- dice[1] = temp[5];
- dice[5] = temp[6];
- dice[6] = temp[2];
- dice[2] = temp[1];
- }
- else {
- dice[5] = temp[1];
- dice[6] = temp[5];
- dice[2] = temp[6];
- dice[1] = temp[2];
- }
- }
- int changeOrder(int order) {
- int ret = 0;
- if (order == 1) {
- ret = EAST;
- }
- else if (order == 2) {
- ret = WEST;
- }
- else if (order == 3) {
- ret = NORTH;
- }
- else {
- ret = SOUTH;
- }
- return ret;
- }
- int main() {
- scanf("%d %d %d %d %d", &Y, &X, &startY, &startX, &K);
- for (int i = 0; i < Y; i++) {
- for (int j = 0; j < X; j++) {
- scanf("%d", &map[i][j]);
- }
- }
- for (int i = 0; i < K; i++) {
- int order;
- scanf("%d", &order);
- if (startY + dy[changeOrder(order)] >= 0 && startY + dy[changeOrder(order)] < Y
- && startX + dx[changeOrder(order)] >= 0 && startX + +dx[changeOrder(order)] < X ) {
- startY = startY + dy[changeOrder(order)];
- startX = startX + dx[changeOrder(order)];
- rotate(changeOrder(order));
- if (map[startY][startX] == 0) {
- map[startY][startX] = dice[6];
- }
- else {
- dice[6] = map[startY][startX];
- map[startY][startX] = 0;
- }
- printf("%d\n",dice[1]);
- }
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement