Codeforces Problem 499B. Lecture

B. Lecture
time limit per test
1 second
memory limit per test
256 megabytes
input
standard input
output
standard output

You have a new professor of graph theory and he speaks very quickly. You come up with the following plan to keep up with his lecture and make notes.

You know two languages, and the professor is giving the lecture in the first one. The words in both languages consist of lowercase English characters, each language consists of several words. For each language, all words are distinct, i.e. they are spelled differently. Moreover, the words of these languages have a one-to-one correspondence, that is, for each word in each language, there exists exactly one word in the other language having has the same meaning.

You can write down every word the professor says in either the first language or the second language. Of course, during the lecture you write down each word in the language in which the word is shorter. In case of equal lengths of the corresponding words you prefer the word of the first language.

You are given the text of the lecture the professor is going to read. Find out how the lecture will be recorded in your notes.

Input

The first line contains two integers, n and m (1 ≤ n ≤ 30001 ≤ m ≤ 3000) — the number of words in the professor's lecture and the number of words in each of these languages.

The following m lines contain the words. The i-th line contains two strings aibi meaning that the word ai belongs to the first language, the word bi belongs to the second language, and these two words have the same meaning. It is guaranteed that no word occurs in both languages, and each word occurs in its language exactly once.

The next line contains n space-separated strings c1, c2, ..., cn — the text of the lecture. It is guaranteed that each of the strings cibelongs to the set of strings {a1, a2, ... am}.

All the strings in the input are non-empty, each consisting of no more than 10 lowercase English letters.

Output

Output exactly n words: how you will record the lecture in your notebook. Output the words of the lecture in the same order as in the input.

Sample test(s)
input
4 3
codeforces codesecrof
contest round
letter message
codeforces contest letter contest
output
codeforces round letter round
input
5 3
joll wuqrd
euzf un
hbnyiyc rsoqqveh
hbnyiyc joll joll euzf joll
output
hbnyiyc joll joll un joll
 
   
/*
Problem 499B - Lecture
Author:CST15-Lucida
Language:C++
Verdict:Accept
Date:2014-12-24 21:05:07
Time:140 ms
Memory: 500K
*/
#include <iostream>
using namespace std;

struct node{
    string s1;
    string s2;
};

int t;
int n;
int main()
{
    node no[3010];
    string s3;
    cin>>t>>n;
    for(int j=0;j<n;j++){
        cin>>no[j].s1>>no[j].s2;
    }
    for(int k=0;k<t;k++){
        cin>>s3;
        
        for(int i=0;i<n;i++){
            if(s3 == no[i].s1||s3 == no[i].s2){
                if(no[i].s1.size()<=no[i].s2.size()){
                    if(k == 0)
                        cout<<no[i].s1;
                    else
                        cout<<" "<<no[i].s1;
                }
                else if(no[i].s1.size()>no[i].s2.size()){
                    if(k == 0)
                        cout<<no[i].s2;
                    else
                        cout<<" "<<no[i].s2;
                }
            }
        }
    }
    cout<<endl;
    return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值