UVa 10010 Where’s Waldorf? Solution

#include <iostream>
#include <vector>
#include <string>
using namespace std;
int m,n;
vector<vector<char> > a(50,vector<char>(50));
string s;
void check(){
    vector<vector<int> > d={{0,1},{1,0},{0,-1},{-1,0},{1,1},{-1,-1},{-1,1},{1,-1}};
    for(int i=0;i<m;i++){
        for(int j=0;j<n;j++){
            for(int k=0;k<8;k++){
                int x=i,y=j,idx=0;
                while(idx<s.size()&&x>-1&&x<m&&y>-1&&y<n&&s[idx]==a[x][y]){
                    idx++;
                    x+=d[k][0],y+=d[k][1];
                }
                if(idx==s.size()){
                    cout<<i+1<<' '<<j+1<<endl;
                    return;
                }
            }
        }
    }
}
int main(){
    int t;
    cin>>t;
    while(t--){
        cin>>m>>n;
        for(int i=0;i<m;i++){
            for(int j=0;j<n;j++){
                cin>>a[i][j];
                if(a[i][j]>='a'&&a[i][j]<='z')
                    a[i][j]-=32;
            }
        }
        int k;
        for(cin>>k;k;k--){
            cin>>s;
            for(int i=0;i<s.size();i++){
                if(s[i]>='a'&&s[i]<='z')
                    s[i]-=32;
            }
            check();
        }
        if(t)
            cout<<endl;
    }
}

Comments