main.cc 876 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. #include <cstdio>
  2. #include <set>
  3. using std::set; using std::pair; using std::make_pair;
  4. const int N = 50000;
  5. const int R = 50000;
  6. const int C = 50000;
  7. char ins[N + 1];
  8. set<pair<int, int> > vis;
  9. int main() {
  10. int T = 0, n, r, c, sr, sc;
  11. scanf("%d", &T);
  12. for (int t = 1; t <= T; t++) {
  13. scanf("%d %d %d %d %d %s", &n, &r, &c, &sr, &sc, ins);
  14. vis.clear();
  15. vis.emplace(sr, sc);
  16. for (int i = 0; i < n; i++) {
  17. int dr = 0, dc = 0;
  18. switch (ins[i]) {
  19. case 'N':
  20. dr = -1;
  21. break;
  22. case 'S':
  23. dr = 1;
  24. break;
  25. case 'W':
  26. dc = -1;
  27. break;
  28. case 'E':
  29. dc = 1;
  30. break;
  31. }
  32. do {
  33. sr += dr;
  34. sc += dc;
  35. } while (vis.find(make_pair(sr, sc)) != vis.end());
  36. vis.emplace(sr, sc);
  37. }
  38. printf("Case #%d: %d %d\n", t, sr, sc);
  39. }
  40. return 0;
  41. }