KinHeap(id, x0, speed, n): cria um maxheap cinético com n elementos, com identificador, valor inicial e velocidade nos vetores id, x0 e speed. Advance(t): avança o tempo para o instante t Change(id, v): altera a velocidade do elemento id para v Insert(id, xnow, v): insere o elemento id na posição xnow com velocidade v Max(): identificador do elemento com o maior valor no instante atual DeleteMax(): remove o elemento com o maior valor Delete(id): remove o elemento id Print(): imprime o heap no instante atualConsidere x0, v e now valores reais (double).
Codificação das operações:
1 <t> significa Advance(t) 2 <id> <v> significa Change(id, v) 3 <id> <xnow> <v> significa Insert(id, xnow, v) 4 significa Max() 5 significa DeleteMax() 6 <id> significa Delete(id) 7 significa Print()Exemplo de entrada para o programa de testes:
A primeira linha do arquivo de entrada contém número de elementos iniciais, n.
As n próximas linhas contêm elementos iniciais com formato "x_0 v",
sendo que os id's dos elementos iniciais devem ser 1, 2,..., n.
As linhas subsequentes contém comandos seguindo a codificação, como os que seguem.
5 8 5 3 4 17 -1 16 1 5 0 7 4 1 1 7 4 1 4 7 2 2 0 2 4 -1 4 5 1 9.5 7 4 5 3 6 9.5 1 6 4 1 15 7Saída esperada para este teste:
Cada tripla, na impressão abaixo, representa o x_now (x0 v) do elemento em questão.
3 (3 4) 16 (16 1) 5 (5 0) 17 (17 -1) 8 (8 5) 3 7 (3 4) 16 (17 -1) 5 (5 0) 17 (16 1) 13 (8 5) 4 13 (17 -1) 19 (3 4) 5 (5 0) 28 (8 5) 20 (16 1) 1 7.5 (17 -1) 14.5 (24 -1) 19 (19 0) 5 (5 0) 2 2 (17 -1) 15 (0 1) 5 (5 0)