12345678910111213141516171819202122232425262728293031323334353637383940414243444546 |
- #include <cstdio>
- #include <set>
- using std::set; using std::pair; using std::make_pair;
- const int N = 50000;
- const int R = 50000;
- const int C = 50000;
- char ins[N + 1];
- set<pair<int, int> > vis;
- int main() {
- int T = 0, n, r, c, sr, sc;
- scanf("%d", &T);
- for (int t = 1; t <= T; t++) {
- scanf("%d %d %d %d %d %s", &n, &r, &c, &sr, &sc, ins);
- vis.clear();
- vis.emplace(sr, sc);
- for (int i = 0; i < n; i++) {
- int dr = 0, dc = 0;
- switch (ins[i]) {
- case 'N':
- dr = -1;
- break;
- case 'S':
- dr = 1;
- break;
- case 'W':
- dc = -1;
- break;
- case 'E':
- dc = 1;
- break;
- }
- do {
- sr += dr;
- sc += dc;
- } while (vis.find(make_pair(sr, sc)) != vis.end());
- vis.emplace(sr, sc);
- }
- printf("Case #%d: %d %d\n", t, sr, sc);
- }
- return 0;
- }
|