// UVa 10010 - Where's Waldorf? #include <string> #include <iostream> #include <stdio.h> using namespace std; int move[8][2] = { { 1, 1 }, { 1, 0 }, { 1, -1 }, { 0, 1 }, { 0, -1 }, { -1, 1 }, { -1, 0 }, { -1, -1 } }; int main() { int t; for (cin >> t; t; t--) { int m, n; cin >> m >> n; string soup[50]; for (int i = 0; i < m; i++) { cin >> soup[i]; for (int j = 0; j < n; j++) if (soup[i][j] >= 'a' && soup[i][j] <= 'z') soup[i][j] = soup[i][j] - 'a' + 'A'; } int q; for (cin >> q; q; q--) { string word; cin >> word; for (int j = 0; j < word.length(); j++) if (word[j] >= 'a' && word[j] <= 'z') word[j] = word[j] - 'a' + 'A'; int l = word.length() - 1; int si = 0, sj = 0; bool found = false; for (int i = 0; i < m && !found; i++) for (int j = 0; j < n && !found; j++) if (soup[i][j] == word[0]) { for (int k = 0; k < 8 && !found; k++) { if (i + l * move[k][0] >= 0 && i + l * move[k][0] < m && j + l * move[k][1] >= 0 && j + l * move[k][1] < n) { int a = i, b = j; found = true; for (int ll = 1; ll <= l; ll++) { a += move[k][0]; b += move[k][1]; if (soup[a][b] != word[ll]) { found = false; break; } } if (found) { si = i; sj = j; } } } } cout << si + 1 << " " << sj + 1 << endl; } if (t > 1) cout << endl; } }
Saturday, June 13, 2015
UVa 10010 - Where's Waldorf?
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment