Advertisement
hwanil

Untitled

Jan 15th, 2018
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.15 KB | None | 0 0
  1. #include<stdio.h>
  2.  
  3.  
  4. using namespace std;
  5.  
  6. int Y, X;
  7. int map[55][55];
  8. int dy[] = { -1,0,1,0 };
  9. int dx[] = { 0,1,0,-1 };
  10.  
  11. int changeDir(int d) {
  12.     return (d + 3) % 4;
  13. }
  14. int backDir(int d) {
  15.     return (d + 2) % 4;
  16. }
  17. int main() {
  18.     int y, x, d;
  19.     scanf("%d %d", &Y, &X);
  20.     scanf("%d %d %d",&y,&x,&d);
  21.  
  22.     for (int i = 0; i < Y; i++) {
  23.         for (int j = 0; j < X; j++) {
  24.             scanf("%d",&map[i][j]);
  25.         }
  26.     }
  27.     int ans = 0;
  28.     while (true) {
  29.  
  30.         if (map[y][x] == 0) {
  31.             map[y][x] = 2;
  32.             ans++;
  33.         }
  34.  
  35.         int i;
  36.         for (i = 0; i < 4; i++) {
  37.             d = changeDir(d);
  38.             if (y + dy[d] >= 0 && y + dy[d] < Y && x + dx[d] >= 0 && x + dx[d] < X) {
  39.                 if (map[y + dy[d]][x + dx[d]] == 0) {
  40.                     y = y + dy[d];
  41.                     x = x + dx[d];
  42.                     break;
  43.                 }
  44.             }
  45.         }
  46.  
  47.         if (i == 4) {
  48.             if (y + dy[backDir(d)] >= 0 && y + dy[backDir(d)] < Y && x + dx[backDir(d)] >= 0 && x + dx[backDir(d)] < X) {
  49.                 if (map[y + dy[backDir(d)]][x + dx[backDir(d)]] == 1) {
  50.                     break;
  51.                 }
  52.                 else if (map[y + dy[backDir(d)]][x + dx[backDir(d)]] != 1) {
  53.                     y = y + dy[backDir(d)];
  54.                     x = x + dx[backDir(d)];
  55.                 }
  56.            
  57.             }
  58.         }
  59.        
  60.     }
  61.     printf("%d\n", ans);
  62.        
  63.     return 0;
  64. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement