• Source
    1. #include<bits/stdc++.h>
    2.  
    3. using namespace std;
    4.  
    5. string s;
    6.  
    7. struct data
    8. {
    9. bool block,N,S,E,W;
    10.  
    11. }color[55][55];
    12.  
    13. int main()
    14. {
    15. int row,col,posX,posY,i,j,x;
    16.  
    17. char now;
    18.  
    19. bool lost,temp,store;
    20.  
    21. cin>>row>>col;
    22.  
    23. while(cin>>i>>j>>now)
    24. {
    25. cin>>s;
    26.  
    27. int len = s.length();
    28.  
    29. lost = false;
    30.  
    31. posX = i;
    32.  
    33. posY = j;
    34.  
    35. for(x=0; x<len; x++)
    36. {
    37. if(s[x]=='F')
    38. {
    39. if(now=='N')
    40. {
    41. temp = color[posX][posY].block;
    42.  
    43. store = color[posX][posY].N;
    44.  
    45. if(temp==true && store==true)
    46. {
    47. continue;
    48. }
    49.  
    50. posY++;
    51.  
    52. if(temp==true && posY>col)
    53. {
    54. posY--;
    55.  
    56. continue;
    57. }
    58.  
    59. if(posY>col)
    60. {
    61. lost = true;
    62.  
    63. posY--;
    64.  
    65. color[posX][posY].block = true;
    66.  
    67. color[posX][posY].N = true;
    68.  
    69. break;
    70. }
    71. }
    72. else if(now=='S')
    73. {
    74. temp = color[posX][posY].block;
    75.  
    76. store = color[posX][posY].S;
    77.  
    78. if(temp==true && store==true)
    79. {
    80. continue;
    81. }
    82.  
    83. posY--;
    84.  
    85. if(temp==true && posY<0)
    86. {
    87. posY++;
    88.  
    89. continue;
    90. }
    91.  
    92. if(posY<0)
    93. {
    94. lost = true;
    95.  
    96. posY++;
    97.  
    98. color[posX][posY].block = true;
    99.  
    100. color[posX][posY].S = true;
    101.  
    102. break;
    103. }
    104. }
    105. else if(now=='E')
    106. {
    107. temp = color[posX][posY].block;
    108.  
    109. store = color[posX][posY].E;
    110.  
    111. if(temp==true && store==true)
    112. {
    113. continue;
    114. }
    115.  
    116. posX++;
    117.  
    118. if(temp==true && posX>row)
    119. {
    120. posX--;
    121.  
    122. continue;
    123. }
    124.  
    125. if(posX>row)
    126. {
    127. lost = true;
    128.  
    129. posX--;
    130.  
    131. color[posX][posY].block = true;
    132.  
    133. color[posX][posY].E = true;
    134.  
    135. break;
    136. }
    137. }
    138. else if(now=='W')
    139. {
    140. temp = color[posX][posY].block;
    141.  
    142. store = color[posX][posY].W;
    143.  
    144. if(temp==true && store==true)
    145. {
    146. continue;
    147. }
    148.  
    149. posX--;
    150.  
    151. if(temp==true && posX<0)
    152. {
    153. posX++;
    154.  
    155. continue;
    156. }
    157.  
    158. if(posX<0)
    159. {
    160. lost = true;
    161.  
    162. posX++;
    163.  
    164. color[posX][posY].block = true;
    165.  
    166. color[posX][posY].W = true;
    167.  
    168. break;
    169. }
    170. }
    171. }
    172. else if(s[x]=='L')
    173. {
    174. if(now=='N')
    175. {
    176. now = 'W';
    177. }
    178. else if(now=='S')
    179. {
    180. now = 'E';
    181. }
    182. else if(now=='E')
    183. {
    184. now = 'N';
    185. }
    186. else if(now=='W')
    187. {
    188. now = 'S';
    189. }
    190. }
    191. else if(s[x]=='R')
    192. {
    193. if(now=='N')
    194. {
    195. now = 'E';
    196. }
    197. else if(now=='S')
    198. {
    199. now = 'W';
    200. }
    201. else if(now=='E')
    202. {
    203. now = 'S';
    204. }
    205. else if(now=='W')
    206. {
    207. now = 'N';
    208. }
    209. }
    210. }
    211.  
    212. printf("%d %d %c",posX,posY,now);
    213.  
    214. if(lost==true)
    215. {
    216. printf(" LOST\n");
    217. }
    218. else
    219. {
    220. puts("");
    221. }
    222. }
    223.  
    224. return 0;
    225. }