XXVI Olimpíada Brasileira de Informática
Submeta sua solução

Nome do arquivo: envelopes.x, onde x deve ser c, cpp, java, js ou py

Número de Envelopes

Aldo é um garoto muito esperto que adora promoções e sorteios. Como já participou de muitas promoções da forma "para participar, envie n rótulos de produtos ...", Aldo tem o costume de guardar o rótulo de todos os produtos que compra. Dessa forma, sempre que uma empresa faz uma promoção ele já tem um monte de rótulos para mandar.

A SBC (Super Balas e Caramelos) está fazendo uma nova promoção, e, como era de se esperar, Aldo quer participar. Para participar da promoção é preciso enviar um envelope contendo um rótulo de cada tipo de bala que a SBC produz. Por exemplo, se a SBC produz 3 tipos de balas, A, B, C, e uma pessoa tem 3 rótulos de A, 3 de B e 2 de C, ela pode enviar no máximo 2 envelopes, já que falta um rótulo de C para compor o terceiro envelope. não há limite para o número de envelopes que uma pessoa pode enviar.

Balas são a segunda coisa de que Aldo mais gosta (a primeira como você sabe são promoções). Por causa disso a quantidade de rótulos de balas que ele tem é muito grande, e ele não está conseguindo determinar a quantidade máxima de envelopes que ele pode enviar.

Como você é o melhor amigo de Aldo ele pediu sua ajuda para fazer o cálculo, de modo que ele compre o número exato de envelopes.

Tarefa

Você deve escrever um programa que, a partir da lista de rótulos de Aldo, calcula o número máximo de envelopes válidos que ele pode enviar.

Entrada

A entrada contém um único conjunto de testes, que deve ser lido do dispositivo de entrada padrão (normalmente o teclado).

A primeira linha contém dois números inteiros N (1 ≤ N ≤ 1000000) e K (1 ≤ K ≤ 1000) representando respectivamente a quantidade de rótulos de balas que Aldo possui e o número de tipos diferentes de bala que a SBC produz. Os tipos de balas são identificados por inteiros de 1 a K. A segunda linha contém N números inteiros Xi, cada um representando um rótulo de bala que Aldo possui (1 ≤ XiK, para 1 ≤ iN).

Saída

Seu programa deve imprimir, na saída padrão, o número máximo de envelopes válidos que Aldo pode enviar.

Informações sobre a pontuação

  • Em um conjunto de casos de teste que totaliza 30 pontos, N ≤ 10 e Xi ≤ 10.
  • Em um conjunto de casos de teste que totaliza 80 pontos, N ≤ 100 e Xi ≤ 100.

Exemplos

Entrada
10 2
1 1 1 1 1 2 2 2 2 2			
			
Saída
5			
			
Entrada
20 5
1 2 3 4 1 2 3 4 1 2 3 4 5 1 2 3 4 5 4 4
			
Saída
2
			
Tarefas Programação Nível 1
Promoção:
sbc
Patrocínio
 
Apoio
 
Coordenação