#53893: C++解決TLE


chunfan0119@gmail.com (光夢冰狐)


#include <bits/stdc++.h>
using namespace std;
struct four{
    vector<int> a;
};
int main()
{
//    ifstream f("t.txt");
//    if(f) cin.rdbuf(f.rdbuf());
//    else cout<<"asd";
    ios::sync_with_stdio(false);
    cin.tie(0);
    int m,n,q; cin>>m>>n>>q;
    vector<vector<int>> sit (m,vector<int>(n));
    for(int i=0;i<m;i++){
        for(int j=0;j<n;j++) cin>>sit[i][j];
}
    unordered_map<int,vector<int>> previous;
    for(int i=0;i<m;i++){
        for(int j=0;j<n;j++){
            if(i>=1) previous[sit[i][j]].push_back(sit[i-1][j]);
            else previous[sit[i][j]].push_back(sit[m-1][j]);
            if(i<m-1) previous[sit[i][j]].push_back(sit[i+1][j]);
            else previous[sit[i][j]].push_back(sit[0][j]);
            if(j>=1) previous[sit[i][j]].push_back(sit[i][j-1]);
            else previous[sit[i][j]].push_back(sit[i][n-1]);
            if(j<n-1) previous[sit[i][j]].push_back(sit[i][j+1]);
            else previous[sit[i][j]].push_back(sit[i][0]);
        }
    }
    for(int i=0;i<q;i++){
        int getnum; cin>>getnum;
        sort(previous[getnum].begin(),previous[getnum].end());
        for(int ii:previous[getnum]) cout<<ii<<" ";
        cout<<endl;
    }

 

////////////////////////////////////////////////////

//底下上註解的是60% 後面會TLE

//    for(int i=0;i<q;i++){
//        int getnum; cin>>getnum;
//        vector<int> out;
//        bool flag=false;
//        //cout<<"j";
//        for(int j=0;j<m;j++){
//            for(int k=0;k<n;k++){
//                if(sit[j][k]==getnum){
//                    if(j>=1) out.push_back(sit[j-1][k]);
//                    else out.push_back(sit[m-1][k]);
//                    if(j<m-1) out.push_back(sit[j+1][k]);
//                    else out.push_back(sit[0][k]);
//                    if(k>=1) out.push_back(sit[j][k-1]);
//                    else out.push_back(sit[j][n-1]);
//                    if(k<n-1) out.push_back(sit[j][k+1]);
//                    else out.push_back(sit[j][0]);
//                    flag=true; break;
//                }
//                if (flag==true) break;
//            }
//        }
//        sort(out.begin(),out.end());
//        for(int ii:out) cout<<ii<<" ";
//        cout<<endl;
//    }

}