Technocup 2021 - Elimination Round 1 A New Technique
#include<iostream>
#include<algorithm>
#include<cstring>
#include<vector>
using namespace std;
#define rep(i,a,n) for(int i=0;i<n;i++)//repeat 默认升序
#define per(i,a,n) for(int i=n;i>=0;i--)//per 对rep的颠倒,默认降序
#define pb push_back
#define IOS ios::sync_with_stdio(false);cin.tie(0);cout.tie(0)
/*
已知每行的相关顺序,
但不知道行的层次,通过列来找到行的层次
因为每一行的第一个元素就决定了该行剩余元素的排列,
所以确定每一行第一个元素的层次也就是,该行在第几行就行了
*/
typedef long long ll;
const int N=510;
int a[N][N],b[N][N];
int main()
{
IOS;
int t;cin>>t;
while(t--)
{
int n,m;cin>>n>>m;
rep(i,0,n)
rep(j,0,m)
cin>>a[i][j];
rep(i,0,m)
rep(j,0,n)
cin>>b[i][j];
vector<int>ans;
rep(i,0,n)
{
bool flag=false;
rep(j,0,n)
{
rep(k,0,m)
{
if(b[0][i]==a[j][k])
{
ans.pb(j);
flag=1;
break;
}
}
if(flag)
break;
}
}
rep(i,0,n)
{
rep(j,0,m)
cout<<a[ans[i]][j]<<" ";
cout<<endl;
}
}
return 0;
}
原文:https://www.cnblogs.com/forward-985/p/13996676.html