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.