Advertisement
royalsflush

Referência para 11831 (Luiza)

Feb 29th, 2012
31
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.17 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <ctype.h>
  3.  
  4. int n,m;
  5. int s;
  6. char grid[110][110];
  7. char com[50010];
  8. int ci, cj, dir;
  9. int mv[4][2] = {{-1,0}, {0,1},
  10.         {1,0}, {0,-1}};
  11. int sticker;
  12.  
  13. int main() {
  14.     while (1) {
  15.         scanf("%d %d %d", &n,&m,&s);
  16.         if (!n && !m && !s) break;
  17.         sticker=0;
  18.  
  19.         for (int i=0; i<n; i++)
  20.             for (int j=0; j<m; j++)
  21.                 scanf(" %c", &grid[i][j]);
  22.    
  23.         for (int i=0; i<s; i++)
  24.             scanf(" %c", &com[i]);
  25.  
  26.         for (int i=0; i<n; i++)
  27.             for (int j=0; j<m; j++)
  28.                 if (isalpha(grid[i][j])) {
  29.                     ci = i, cj = j;
  30.  
  31.                     switch (grid[i][j]) {
  32.                         case 'N': dir=0; break;
  33.                         case 'L': dir=1; break;
  34.                         case 'S': dir=2; break;
  35.                         case 'O': dir=3; break;
  36.                     }
  37.  
  38.                     break;
  39.                 }
  40.        
  41.         for (int i=0; i<s; i++) {
  42.             switch (com[i]) {
  43.                 case 'D': dir=(dir+1)%4; break;
  44.                 case 'E': dir=(dir+4-1)%4; break;
  45.                 case 'F':
  46.                     int ni, nj;
  47.                    
  48.                     ni=mv[dir][0]+ci;
  49.                     nj=mv[dir][1]+cj;
  50.  
  51.                     if (ni<0 || ni>=n) break;
  52.                     if (nj<0 || nj>=m) break;
  53.                     if (grid[ni][nj]=='#') break;
  54.                     if (grid[ni][nj]=='*')
  55.                         sticker++, grid[ni][nj]='.';
  56.  
  57.                     ci=ni, cj=nj;
  58.             }
  59.         }
  60.  
  61.         printf("%d\n", sticker);
  62.     }
  63.  
  64.     return 0;
  65. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement