fork download
  1. #include <stdio.h>
  2. int main(){
  3. int n,m,k;
  4. scanf("%d%d%d",&n,&m,&k);
  5.  
  6. int grass[300][300]={0};
  7. for(int i=1;i<=n;i++)
  8. for(int j=1;j<=m;j++){
  9. scanf("%d",&grass[i][j]);
  10. }
  11.  
  12. for(int i=0;i<k;i++){
  13. int op;
  14. scanf("%d",&op);
  15. int x,y;
  16. scanf("%d%d",&x,&y);
  17. if(op==1){ //A
  18. char c;
  19. while(scanf("%c",&c)!=EOF){
  20. switch(c){
  21. case 'N':
  22. if(x>1){
  23. x--;
  24. grass[x][y]=(grass[x][y]==0)?0:grass[x][y]-1;
  25. }
  26. break;
  27. case 'E':
  28. if(y<m){
  29. y++;
  30. grass[x][y]=(grass[x][y]==0)?0:grass[x][y]-1;
  31. }
  32. break;
  33. case 'S':
  34. if(x<n){
  35. x++;
  36. grass[x][y]=(grass[x][y]==0)?0:grass[x][y]-1;
  37. }
  38. break;
  39. case 'W':
  40. if(y>1){
  41. y--;
  42. grass[x][y]=(grass[x][y]==0)?0:grass[x][y]-1;
  43. }
  44. break;
  45. }
  46. }
  47. }
  48. else{ //B
  49. int a;
  50. scanf("%d",&a);
  51. for(int i=0;i<a;i++){
  52. //determine direction
  53. char c;
  54. if(y<m) c='E';
  55. else if(x<n&&grass[x][y+1]<grass[x+1][y]) c='S';
  56. else if(y>1&&grass[x][y-1]>grass[x+1][y]) c='W';
  57. else if(y>1&&grass[x][y-1]<grass[x-1][y]) c='N';
  58.  
  59. switch(c){
  60. case 'N':
  61. if(x>1){
  62. x--;
  63. grass[x][y]=(grass[x][y]==0)?0:grass[x][y]-1;
  64. }
  65. break;
  66. case 'E':
  67. if(y<m){
  68. y++;
  69. grass[x][y]=(grass[x][y]==0)?0:grass[x][y]-1;
  70. }
  71. break;
  72. case 'S':
  73. if(x<n){
  74. x++;
  75. grass[x][y]=(grass[x][y]==0)?0:grass[x][y]-1;
  76. }
  77. break;
  78. case 'W':
  79. if(y>1){
  80. y--;
  81. grass[x][y]=(grass[x][y]==0)?0:grass[x][y]-1;
  82. }
  83. break;
  84. }
  85. }
  86. }
  87. }
  88.  
  89. for(int i=1;i<=n;i++){
  90. for(int j=1;j<=m;j++)
  91. printf("%d ",grass[i][j]);
  92. printf("\n");
  93. }
  94. return 0;
  95. }
Success #stdin #stdout 0s 5320KB
stdin
2 2 1
3 4
5 6
2 2 2 3
stdout
3 4 
3 5