Tarefa 8 - Listas Legais

Prazo de entrega:


Voltar para lista de tarefas

Introdução

David Neto (DN) gosta muito de observar listas de números, o suficiente para apelidar algumas delas como listas legais. Uma lista L é considerada legal por DN se, e somente se, para todo elemento x pertencente a L existirem exatamente x cópias de x. Por exemplo, a lista A = {3,2,1,2,3,3} e B = {} são listas legais, já a lista C = {1,2,2,3,4} não é uma lista legal.

Certo dia, DN recebeu uma lista muito grande de números que volta e meia crescia mais. Porém, ele estava insatisfeito com essa lista e gostaria de saber a menor quantidade de números que deveriam ser retirados da lista para que ela finalmente se tornasse uma lista legal. Como a lista de números pode acabar tendo mais elementos do que DN pode contar, ele pediu a sua ajuda para responder essa questão.

É obrigatório utilizar uma árvore binária balanceada para a resolução desta atividade. Porém, você pode escolher a árvore balanceada que desejar: rubro-negra, AVL, etc.

Entrada

A primeira linha da entrada consiste de dois inteiros n e k que indicam, respectivamente, a quantidade de números inicialmente na lista de DN e o número de operações que ele realizará. A linha seguinte conterá os n inteiros da lista de DN. Cada uma das k linhas seguintes conterá uma operação que DN deseja realizar. Cada uma dessas operações tem uma das formas a seguir:

Exemplo de entrada

5 5
123456789 987654321 1234567890 9987654321 5
2 123456789
2 987654321
2 1234567890
2 9987654321
3

Restrições

Saída

Toda vez que as operações ‘2’ e ‘3’ aparecerem, deve-se imprimir um inteiro representando o resultado da operação e, após isso, uma quebra de linha.

Exemplo de saida

1
1
1
1
5