Description
Kuroneco暗恋Kyousuke很久了,终于下定决心写一封情书给他。害羞的她不敢直接把心意写到情书上,所以将情书里的内容做了加密处理。
她先把内容写好了,然后将其打乱为一个N*M的矩阵,接着给出另一个N*M的数字矩阵,表示之前情书中内容的子母的顺序。
比如:
情书是一个3*4的字符矩阵
ou!!
I lo
ve y
然后数字矩阵为
9 10 11 12
1 2 3 4
5 6 7 8
按照数字矩阵中的数字的顺序,就可以将情书本来的内容读出来了!
Kyousuke接到情书后,看着这两个奇怪矩阵,一头雾水。我的ACM不可能会收到情书!!!
现在请你帮助Kyousuke将情书的内容还原出来吧!
Input
第一行一个整数T(1<=T<=10)表示数据组数。
接下来给出T组测试数据:
每组数据第一行两个整数n, m (0 < n,m <= 1000)。
给出n*m的字符矩阵 (0<ASCII码<127)。
给出n*m的数字矩阵 (矩阵保证无重复整数,范围在1--n*m)。
Output
对于每组数据,输出一行还原后的情书。
Sample Input
13 4ou!!I love y9 10 11 121 2 3 45 6 7 8
Sample Output
I love you!!
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cstring>
#include <string>
#include <cmath>
using namespace std;
const int maxn = 1e6+100;
char str[maxn];
char s[1005][1005];
int a[1005][1005];
int main()
{
int t;
cin>>t;
while(t--){
int x,y;
cin>>x>>y;
getchar();
for(int i=0;i<x;i++){
gets(s[i]);
}
for(int i=0;i<x;i++)
for(int j=0;j<y;j++){
scanf("%d",&a[i][j]);
str[a[i][j]]=s[i][j];
}
for(int i=1;i<=x*y;i++)
printf("%c",str[i]);
cout<<endl;
}
return 0;
}