Description
WLD likes playing with numbers. One day he is playing with $N$ integers. He wants to delete $K$ integers from them. He likes diversity, so he wants to keep the kinds of different integers as many as possible after the deletion. But he is busy pushing, can you help him?
Input
There are Multiple Cases. (At MOST $100$)
For each case:
The first line contains one integer $N(0 < N \leq 100)$.
The second line contains $N$ integers $a1,a2,...,aN(1 \leq ai \leq N)$, denoting the integers WLD plays with.
The third line contains one integer $K(0 \leq K < N)$.
For each case:
The first line contains one integer $N(0 < N \leq 100)$.
The second line contains $N$ integers $a1,a2,...,aN(1 \leq ai \leq N)$, denoting the integers WLD plays with.
The third line contains one integer $K(0 \leq K < N)$.
Output
For each case:
Print one integer. It denotes the maximum of different numbers remain after the deletion.
Print one integer. It denotes the maximum of different numbers remain after the deletion.
Sample Input
4 1 3 1 2 1
Sample Output
3
Hint
if WLD deletes a 3, the numbers remain is [1,1,2],he'll get 2 different numbers. if WLD deletes a 2, the numbers remain is [1,1,3],he'll get 2 different numbers. if WLD deletes a 1, the numbers remain is [1,2,3],he'll get 3 different numbers.
#include <cstdio>
#include <iostream>
#include <cstring>
#include <cstdlib>
#include <algorithm>
#include <map>
using namespace std;
#define INF 0x3f3f3f3f
int main()
{
int n,a[120],k;
while(scanf("%d",&n)!=EOF)
{
int MAX,num=0,NUM=0,b;
memset(a,0,sizeof(a));
for(int i=0; i<n; i++)
{
scanf("%d",&b);
if(a[b]==0)
{
num++;//不同数字个数
a[b]=1;
}
else
{
NUM++;//重复个数
}
}
scanf("%d",&k);
if(k<NUM) MAX=num; //重复个数-k
else MAX=num+NUM-k;//总个数-k
printf("%d\n",MAX);
}
return 0;
}