Problema B

Alcunhas

Em Portugal, é frequente as pessoas terem quatro, cinco, ou mesmo mais palavras no seu nome. E ainda há as partículas "de", "dos", etc. Normalmente os pais, ao baptizarem os seus filhos não se preocupam com isso, mas é claro que pode acontecer que as letras iniciais das palavras do nome formem uma palavra portuguesa, caso em que essa palavras se pode tornar numa alcunha. Imagine a Rita Inês Costa Almeida. Ela será a Rica, mesmo que provenha de uma família menos abastada.

O caso da Rita Inês não é muito grave mas veja o do Paulo Alberto Rodrigues Vieira Onofre. As iniciais formam "parvo". Convenhamos que é desagradável e ninguém gostaria de se chamar assim, suponho.

Como estes casos podem passar despercebidos, o que faz falta é um programa para trabalhar nas conservatórias do registo civil, detectando os nomes cujas iniciais formam alcunhas potencialmente desagradáveis.

Tarefa

A sua tarefa é escrever um programa para determinar os nomes indesejáveis de entre uma lista nomes, dado um dicionário com palavras de referência. Um nome é indesejável se as iniciais das palavras que compõem o nome formarem uma palavra das que pertencem ao no dicionário. Para efeitos deste problema as partículas "de", "da", "do", "das", "dos" e "e" são processados como as outras palavras do nome. Por exemplo, Luís Eduardo Rodrigues de Oliveira dá "lerdo" Outro exemplo: Olívia Noémia Tavares e Melo dá "ontem".

Dados

O dicionário e os nomes a analisar vêm num ficheiro, acessível através do standard input. A primeira linha do ficheiro contém um número inteiro, N, representando o número de palavras do dicionário, 0 <= N <= 1000. As N linhas seguintes contêm as palavras do dicionário, uma em cada linha. Cada uma dessas palavras tem no máximo 30 letras. Seguem-se os nomes, um por linha, até ao fim do ficheiro. Os nomes são formados por pelo menos duas palavras e por não mais de dez palavras, separadas por um espaço. O número máximo de caracteres em cada nome, incluindo os espaços, é 110. Todas as palavras do ficheiro, tanto as do dicionário como as dos nomes, só usam letras minúsculas sem acentos ou cedilhas. O número de nomes é desconhecido, mas sabemos, garantidamente, que entre esses nomes não há mais do que 500 nomes indesejáveis.

Resultados

O ficheiro de saída, disponível no standard output, contém uma linha para cada nome indesejável. Nessa linha, primeiro vem a palavra soletrada pelas iniciais do nome, depois um sinal de igual "=" e depois o nome. Este sinal de "=" vem separado da última letra da palavra soletrada e da primeira letra do nome por um espaço. O ficheiro de saída deve vir ordenado por ordem alfabética das palavras soletradas e, em caso de empate, por ordem alfabética dos nomes.

Exemplo de ficheiro de dados

8
ontem
parvo
isto
e
um
exemplo
de
dicionario
luis eduardo rodrigues de oliveira
olivia noemia tavares e melo
paulo alberto rodrigues vieira onofre

Exemplo de ficheiro de resultados

ontem = olivia noemia tavares e melo
parvo = paulo alberto rodrigues vieira onofre


ONI'2003: Olimpíadas Nacionais de Informática -- Final
API - Associação Portuguesa de Informática
Departamento de Informática
Faculdade de Ciências e Tecnologia
Universidade Nova de Lisboa