fork download
  1. using System;
  2.  
  3. public class Test
  4. {
  5. public static void Main()
  6. {
  7. int a,b,c,Robo1,Robo2;
  8. Robo1 = 0;
  9. Robo2 = 0;
  10. string numeros;
  11. string[] partido;
  12. char[,] Matriz;
  13. char[] Instru;
  14. int pontos;
  15. while((numeros = Console.ReadLine()) != "0 0 0")
  16. {
  17. pontos = 0;
  18. partido = numeros.Split();
  19. a = Convert.ToInt32(partido[0]);
  20. b = Convert.ToInt32(partido[1]);
  21. c = Convert.ToInt32(partido[2]);
  22. Matriz = new char[a,b];
  23. Instru = new char[c];
  24. for(int i = 0; i < a; i++)
  25. {
  26. numeros = Console.ReadLine();
  27. for(int j = 0;j < b;j++)
  28. {
  29. Matriz[i,j] = numeros[j];
  30. if(Matriz[i,j] == 'N' || Matriz[i,j] == 'O' || Matriz[i,j] == 'L' || Matriz[i,j] == 'S')
  31. {
  32. Robo1 = i;
  33. Robo2 = j;
  34. }
  35. }
  36. }
  37. numeros = Console.ReadLine();
  38. for(int i = 0;i < c;i++)
  39. {
  40. Instru[i] = numeros[i];
  41. }
  42. for(int i = 0;i < c;i++)
  43. {
  44. switch (Instru[i])
  45. {
  46. case 'E':
  47. switch (Matriz[Robo1,Robo2])
  48. {
  49. case 'N':
  50. Matriz[Robo1,Robo2] = 'O';
  51. break;
  52. case 'O':
  53. Matriz[Robo1,Robo2] = 'S';
  54. break;
  55. case 'S':
  56. Matriz[Robo1,Robo2] = 'L';
  57. break;
  58. case 'L':
  59. Matriz[Robo1,Robo2] = 'N';
  60. break;
  61. }
  62. break;
  63. case 'D':
  64. switch (Matriz[Robo1,Robo2])
  65. {
  66. case 'N':
  67. Matriz[Robo1,Robo2] = 'L';
  68. break;
  69. case 'L':
  70. Matriz[Robo1,Robo2] = 'S';
  71. break;
  72. case 'S':
  73. Matriz[Robo1,Robo2] = 'O';
  74. break;
  75. case 'O':
  76. Matriz[Robo1,Robo2] = 'N';
  77. break;
  78. }
  79. break;
  80. case 'F':
  81. switch (Matriz[Robo1,Robo2])
  82. {
  83. case 'N':
  84. if(Robo1 != 0)
  85. {
  86. if(Matriz[Robo1 - 1,Robo2] != '#')
  87. {
  88. if(Matriz[Robo1 - 1,Robo2] == '*')
  89. {
  90. pontos++;
  91. }
  92. Matriz[Robo1 - 1,Robo2] = Matriz[Robo1,Robo2];
  93. Matriz[Robo1,Robo2] = '.';
  94. Robo1--;
  95. }
  96. }
  97. break;
  98. case 'O':
  99. if(Robo2 != 0)
  100. {
  101. if(Matriz[Robo1,Robo2 - 1] != '#')
  102. {
  103. if(Matriz[Robo1,Robo2 - 1] == '*')
  104. {
  105. pontos++;
  106. }
  107. Matriz[Robo1,Robo2 - 1] = Matriz[Robo1,Robo2];
  108. Matriz[Robo1,Robo2] = '.';
  109. Robo2--;
  110. }
  111. }
  112. break;
  113. case 'S':
  114. if(Robo1 != a - 1)
  115. {
  116. if(Matriz[Robo1 + 1,Robo2] != '#')
  117. {
  118. if(Matriz[Robo1 + 1,Robo2] == '*')
  119. {
  120. pontos++;
  121. }
  122. Matriz[Robo1 + 1,Robo2] = Matriz[Robo1,Robo2];
  123. Matriz[Robo1,Robo2] = '.';
  124. Robo1++;
  125. }
  126. }
  127. break;
  128. case 'L':
  129. if(Robo2 != b - 1)
  130. {
  131. if(Matriz[Robo1,Robo2 + 1] != '#')
  132. {
  133. if(Matriz[Robo1,Robo2 + 1] == '*')
  134. {
  135. pontos++;
  136. }
  137. Matriz[Robo1,Robo2 + 1] = Matriz[Robo1,Robo2];
  138. Matriz[Robo1,Robo2] = '.';
  139. Robo2++;
  140. }
  141. }
  142. break;
  143. }
  144. break;
  145. }
  146. }
  147. Console.WriteLine(pontos);
  148. }
  149. }
  150. }
Success #stdin #stdout 0.01s 131200KB
stdin
3 3 2
***
*N*
***
DE
4 4 5
...#
*#O.
*.*.
*.#.
FFEFF
10 10 20
....*.....
.......*..
.....*....
..*.#.....
...#N.*..*
...*......
..........
..........
..........
..........
FDFFFFFFEEFFFFFFEFDF
0 0 0
stdout
0
1
3