DLUTOJ 1174

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;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值