Problem hidden
|This problem was hidden by Editorial Board member probably because it has incorrect language|version or invalid test data, or description of the problem is not clear.|

HASHADIQ - Hash

Autor: Tiago Falcão


Neste problema, pede-se para armazenar, gerenciar e buscar por indivíduos definidos por um identificador único (inteiro) e pelas seguintes informações: Primeiro e último nome, data de nascimento e telefone.

Entrada
A entrada será feita por 4 comandos: add, del, info e query. A execução é encerrada com EOF.

O comando ''add'' recebe e armazena todos dados do individuo, e retorna erro se já existir individuo com mesmo identificador.

add <id> <first_name> <last_name> <birtday> <phone_number>


O comando ''del'' remove todos dados relacionados a um determinado identificador, e retorna erro se não existir individuo com o identificador fornecido.

del <id>


O comando ''info'' imprime todos dados de um determinado identificador, e retorna erro se não existir individuo com o identificador fornecido.

info <id>


O comando ''query'' realiza uma busca nos indivíduos cadastrados. Conforme as seguintes tags de busca:

  • fn: Primeiro nome
  • ln: Ultimo nome
  • bd: Data de nascimento
  • pn: Telefone

 

query (<tag>:<valor>)+


Saída

O comando ''add'' somente imprime na saída quando ocorre erro na inserção de um individuo, ocorrida na inserção de individuo com identificador duplicado.

O comando ''del'' somente imprime na saída quando o identificador solicitado não existe.

O comando ''info'' imprime todos dados de um determinado identificador, ou imprime erro se não existir individuo com o identificador fornecido.

O comando ''query'' retorna os identificadores que respeitem os critérios da busca na ordem crescente separados por espaços. Em caso de não existir nenhum individuo que respeite a busca, uma linha vazia deve ser impressa.

Exemplo
Entrada:
add 123 Roberto Nascimento 01/01/1960 +55-21-0190-0190
add 123 Joao Souza 11/10/2000 103-99
add 09 Andre Matias 01/01/1970 +55-21-0190-0190
add 222 Diogo Fraga 01/06/1967 +55-21-0190-0190
add 99 Seu Barbosa 01/01/1960 +55-21-0190-0190
add 100 Seu Beirada 01/01/1960 +55-21-9999-9999
add 155 Andre Fortunato 02/01/1962 +55-21-0190-0190
query bd:01/01/1960
query bd:01/01/1960 fn:Seu
query bd:01/01/1960 fn:Seu pn:+55-21-9999-9999
info 100
del 99
query fn:XXX
query bd:01/01/1960 fn:Seu
info 99
del 99

Saída:
ID 123 ja cadastrado.
99 100 123
99 100
100
Seu Beirada 01/01/1960 +55-21-9999-9999

100
ID 99 nao existente.
ID 99 nao existente.


Adicionado por:Wanderley Guimarăes
Data:2010-11-09
Tempo limite:1s
Tamanho do fonte:50000B
Memory limit:1536MB
Cluster: Cube (Intel G860)
Linguagem permitida:Todas exceto: ASM64 CLOJURE ERL FSHARP PERL6 PY_NBC SCALA TCL
Origem:Unicamp

hide comments
2012-05-03 00:48:02 William Lopes [UFV-CF]
Fiz agora com o map em c++, mas mesmo assim está excendendo o tempo limite, alguém poderia dar uma luz?
2012-04-22 00:14:36 Dyeison Carraro [FAJ]
O problema fala em "imprime erro", mas na saída exemplo ele imprime "ID 99 nao existente". Faltam alguns padrőes aqui.
2012-04-20 07:48:22 William Lopes [UFV-CF]
Consegui fazer, mas sempre excede o limite de tempo... Estou utilizando lista duplamente ligadas... Alguma sugestăo?

Last edit: 2012-04-20 16:31:48
2011-10-15 02:37:32 thiagojobson [UERN]
Na força bruta descobri que as IDs devem ser tratadas como inteiros (dăă!). Outra coisa săo os nomes e sobrenomes iguais....Pais sem imaginaçăo :D
2011-10-05 00:00:09 thiagojobson [UERN]
No caso do id "09" pode ser considerado como um simples '9'?
2011-10-03 13:56:18 Cupuaçú Ciberespacial
Alguém conseguiu resolver esse problema usando Java? No meu caso está dando tempo excedido :(
2011-08-27 19:43:24 Rodrigo Roim Ferreira [ITA]
Ah, e passou só com hash, mas quase estourou o tempo limite.
2011-08-27 19:43:06 Rodrigo Roim Ferreira [ITA]
Năo tem ids negativos
2011-07-16 03:44:35 Marlon Fernandes de Alcantara [IC-UNICAMP]
Só com hash năo consegui, tive que usar uma trie, segue a dica pros próximos!
2011-07-15 21:10:25 Marlon Fernandes de Alcantara [IC-UNICAMP]
Rômulo, qual a super sacada que torna esse problema simples!?
© Spoj.com. All Rights Reserved. Spoj uses Sphere Engine™ © by Sphere Research Labs.