time limit per test 2 seconds
memory limit per test 256 megabytes
input standard input
output standard output

After observing the results of Spy Syndrome, Yash realised the errors of his ways. He now believes that a super spy such as Siddhant can’t use a cipher as basic and ancient as Caesar cipher. After many weeks of observation of Siddhant’s sentences, Yash determined a new cipher technique.

For a given sentence, the cipher is processed as:

Convert all letters of the sentence to lowercase.

Reverse each of the words of the sentence individually.

Remove all the spaces in the sentence.

For example, when this cipher is applied to the sentence

Kira is childish and he hates losing

the resulting string is

ariksihsidlihcdnaehsetahgnisol

Now Yash is given some ciphered string and a list of words. Help him to find out any original sentence composed using only words from the list. Note, that any of the given words could be used in the sentence multiple times.

Input

The first line of the input contains a single integer n (1 ≤ n ≤ 10 000) — the length of the ciphered text. The second line consists of n lowercase English letters — the ciphered text t.

The third line contains a single integer m (1 ≤ m ≤ 100 000) — the number of words which will be considered while deciphering the text. Each of the next m lines contains a non-empty word wi (|wi| ≤ 1 000) consisting of uppercase and lowercase English letters only. It’s guaranteed that the total length of all words doesn’t exceed 1 000 000.

Output

Print one line — the original sentence. It is guaranteed that at least one solution exists. If there are multiple solutions, you may output any of those.

Examples

input

30

ariksihsidlihcdnaehsetahgnisol

10

Kira

hates

is

he

losing

death

childish

L

and

Note

output

Kira is childish and he hates losing

input

12

iherehtolleh

5

HI

Ho

there

HeLLo

hello

output

HI there HeLLo

Note

In sample case 2 there may be multiple accepted outputs, “HI there HeLLo” and “HI there hello” you may output any of them.

字典树的应用,以单词建树,将密码串反向记忆化搜索

#include <cstdio>
#include <cstring>
#include <cmath>
#include <cstdlib>
#include <queue>
#include <stack>
#include <iostream>
#include <algorithm> using namespace std; const int Max = 1e6+10; const int MaxM = 10010; typedef struct node
{
int next[30]; int mark;
}Tree; Tree Tr[Max]; int top; char str[Max]; char s[MaxM*10][1011]; int n,m; int vis[MaxM]; bool flag; int NewNode()
{
for(int i=0;i<=26;i++)
{
Tr[top].next[i] = -1;
} Tr[top].mark = -1; return top++;
}
int ok(char c) //大小写转换
{
if(c>='a'&&c<='z')
{
return c-'a';
}
else
{
return c-'A';
}
} void Build(int Root,int index)
{
int len = strlen(s[index]); for(int i = 0; i < len ;i++)
{
int ans = ok(s[index][i]); if(Tr[Root].next[ans]==-1)
{
Tr[Root].next[ans] = NewNode(); }
Root = Tr[Root].next[ans];
} Tr[Root].mark = index;
} int DFS(int pos)
{ if(pos==-1)
{
return true;
} if(vis[pos]!=-1)//判断是否之前是否遍历到
{
return vis[pos];
}
int Root = 0; for(int i = pos;i>=0;i--)
{
int ans = ok(str[i]); if(Tr[Root].next[ans]==-1)
{
break;
} Root = Tr[Root].next[ans]; if(Tr[Root].mark!=-1&&DFS(i-1))
{
if( flag ) printf(" ");
else flag = true; printf("%s", s[Tr[Root].mark]); return vis[pos] = 1;
} } return vis[pos] = 0;
} int main()
{
scanf("%d",&n); scanf("%s",str); scanf("%d",&m); top = 0;flag = false; int Root = NewNode(); for(int i=0;i<m;i++)
{
scanf("%s",s[i]); Build(Root,i);//建立字典树
} for(int i = 0 ; i<MaxM;i++)
{
vis[i] = -1;
} DFS(n-1);//记忆化搜索 return 0;
}

Manthan, Codefest 16 -C. Spy Syndrome 2的更多相关文章

  1. Manthan, Codefest 16 C. Spy Syndrome 2 字典树 + dp

    C. Spy Syndrome 2 题目连接: http://www.codeforces.com/contest/633/problem/C Description After observing ...

  2. CF #Manthan, Codefest 16 C. Spy Syndrome 2 Trie

    题目链接:http://codeforces.com/problemset/problem/633/C 大意就是给个字典和一个字符串,求一个用字典中的单词恰好构成字符串的匹配. 比赛的时候是用AC自动 ...

  3. Manthan, Codefest 16

    暴力 A - Ebony and Ivory import java.util.*; import java.io.*; public class Main { public static void ...

  4. Manthan, Codefest 16 D. Fibonacci-ish

    D. Fibonacci-ish time limit per test 3 seconds memory limit per test 512 megabytes input standard in ...

  5. Manthan, Codefest 16(B--A Trivial Problem)

    B. A Trivial Problem time limit per test 2 seconds memory limit per test 256 megabytes input standar ...

  6. Manthan, Codefest 16 -A Ebony and Ivory

    time limit per test 2 seconds memory limit per test 256 megabytes input standard input output standa ...

  7. CF Manthan, Codefest 16 G. Yash And Trees 线段树+bitset

    题目链接:http://codeforces.com/problemset/problem/633/G 大意是一棵树两种操作,第一种是某一节点子树所有值+v,第二种问子树中节点模m出现了多少种m以内的 ...

  8. CF Manthan, Codefest 16 B. A Trivial Problem

    数学技巧真有趣,看出规律就很简单了 wa 题意:给出数k  输出所有阶乘尾数有k个0的数 这题来来回回看了两三遍, 想的方法总觉得会T 后来想想  阶乘 emmm  1*2*3*4*5*6*7*8*9 ...

  9. Manthan, Codefest 16 H. Fibonacci-ish II 大力出奇迹 莫队 线段树 矩阵

    H. Fibonacci-ish II 题目连接: http://codeforces.com/contest/633/problem/H Description Yash is finally ti ...

随机推荐

  1. rabbitmq method之queue.declare

    queue.declare即申请队列,首先对队列名作处理,若未指定队列名则随机生成一个,然后查询数据库队列是否已经创建,若创建完成则会申请队列返回 handle_method(#'queue.decl ...

  2. php usort 按照数组中的某个键值排序

    //php usort 按照数组中的某个键值排序 如果第一个参数小于第二个参数 -> 返回小于0的整数如果第一个参数等于于第二个参数 -> 返回等于0的整数如果第一个参数大于于第二个参数 ...

  3. https://blog.helong.info/blog/2015/03/13/jump_consistent_hash/

    转载请说明出处:http://blog.csdn.net/cywosp/article/details/23397179     一致性哈希算法在1997年由麻省理工学院提出的一种分布式哈希(DHT) ...

  4. JMeter学习-040-JMeter图形化 HTML 报表概要说明

    JMeter 3.0开始支持动态生成图形化 HTML dashboard报告,当前生成报告有一下两种方式: 1.脚本测试执行结束后,即生成HTML测试报告 2.通过之前生成的测试结果,生成HTML测试 ...

  5. 用Apache生产csr申请证书

    一. 安装Apache: 1.安装完成后将apache安装目录下 conf 文件夹中的"openssl.cnf"文件复制到bin文件夹中: 2.配置Apache支持ssl: 打开A ...

  6. selinux 导致无法启动httpd

    selinux 导致无法启动httpd ansible_dire:~ # /etc/init.d/httpd restart 停止 httpd: [失败]正在启动 httpd:(13)Permissi ...

  7. servlet的匹配规则,兼谈/与/*

    客户端通过URL地址访问服务器(servlet容器)资源,所以servlet若要能对外提供服务,必须要将程序按照java规范将其映射到对应的URL上,映射的规则是需要开发人员在WEB.XML中显示指定 ...

  8. ThinkPHP3.1快速入门(1)基础

    学习网址:http://www.thinkphp.cn/document/60.html

  9. Linux上 .vimrc文件

    在Linux上面对VIM编辑器的格式的设置通常可以提升工作效率,下面对工作机器上的.vimrc文件的内容进行一总结,以备后续的查询 set smarttab set tabstop=4 set shi ...

  10. JQ 数字验证

    $.fn.extend({ checknum: function (min, max, accurate) { if ($(this).val() != "") { $(this) ...