把每个小方块“照相”三次就行:正面看一次、左边看一次、上面看一次;某个位置只要被任何方块挡到,就记成 x。
最后按题目给的方向把三张“照片”打印出来(前两张并排,中间空一行,再打俯视图)就过了。

void solve(){
    int X,Y,Z,N;cin>>X>>Y>>Z>>N;
    vs a(Y,string(X,'.')),b(Y,string(Z,'.')),c(Z,string(X,'.'));
    for(int i=0;i<N;++i){
        int x,y,z;cin>>x>>y>>z;
        a[Y-y][x-1]='x';
        b[Y-y][z-1]='x';
        c[z-1][x-1]='x';
    }
    for(int i=0;i<Y;++i)cout<<a[i]<<" "<<b[i]<<endl;
    cout<<endl;
    for(int i=0;i<Z;++i)cout<<c[i]<<endl;
}