IF672
- Algoritmos e Estruturas de Dados
novembro
2002 a março 2003
5 - As Bolinhas de Mr. BigDoll e a Colisão
Considere algumas
esferas, essas são as bolinhas do nosso problema.
Mr. BigDoll desde quando colidiu com certas bolinhas teve alguns problemas...
Ele tem aversão a colisões de bolinhas... (pois é..
haverá necessidade de tratar colisão, uma razão mais
plausível será dada abaixo para isso)
Qualquer bolinha pode ser identificada dado sua coordenada no espaço
(x,y,z) e seu raio r.
(0 <= x,y,z inteiros < 100 e r cabe em um inteiro sem sinal)
O problema aqui consiste em achar uma função que mapeie bolas
em índices para responder a algumas dúvidas de Mr BigDoll..
Como nota-se dificilmente alguém arrumaria espaço para 100
x 100 x 100 x 2^32 espaços de memória para indexação
direta.
Muito dificilmente Mr. BigDoll tb viria todas essas bolinhas...
Então os alunos de informática do Cin, após terem
assistido a aula prática de hashing saberá
o que fazer com as bolinhas de Mr. BigDoll.
Não haverá bolinhas repetidas (ou seja com x, y, z e r iguais).
Na Prática
A função
hash será em função do x,y,z, sendo portanto necessário
tratamento de colisão.
Nesse problema o tratamento de colisão será feito com uma
lista para cada célula do array.
F(x,y,z) = 100*100*x + 100*y + z ... como pode ser facilmente encontrada.
Entrada e Saída de dados
O arquivo de
entrada consiste em vários conjuntos de dados.
Cada conjunto de dados tem N+1+K linhas.
A primeira linha tem o valor de N (número de bolinhas vistas por
Mr. BigDoll) e K (número de consultas).
Em seguida teremos N linhas cada uma com o valor x, y, z e r de uma bolinha.
Depois disso teremos K linhas com valores de x, y, z e r.
Para cada linha das K linhas fornecidas, deve-se informar primeiramente
se há alguma bola que Mr. BigDoll viu que tem a mesma descrição
da bola em questão.
Se não imprima "Mr. BigDoll, o senhor nao viu essa bola.".
Caso exista algum bola imprima a sua posição 'A' na tabela
hash (index),
seguido de sua ordem 'B' na lista correspondente a seu índice, imprima
também a quantidade de bolas 'C' com esse índice.
Siga esse formato:
se 'C' > 1 "Mr. BigDoll, essa bola esta na posicao 'A', onde existem 'C'
bolas. A ordem dessa e 'B'."
senão "Mr. BigDoll, essa bola esta sozinha na posicao 'A'."
Siga os exemplos abaixo para esclarecer dúvidas.
Entrada exemplo
3 4
1 1 1 4
1 2 1 4
1 1 1 5
1 2 1 4
1 1 1 4
1 1 1 5
2 2 2 1
Saída correspondente
Conjunto #1:
Mr. BigDoll, essa bola esta sozinha na posicao 10201.
Mr. BigDoll, essa bola esta na posicao 10101, onde existem 2 bolas. A ordem dessa e 1.
Mr. BigDoll, essa bola esta na posicao 10101, onde existem 2 bolas. A ordem dessa e 2.
Mr. BigDoll, o senhor nao viu essa bola.