Description
zcc有n个数(a1,a2,...,an),他希望进行k次删除一个数的操作,使得最后剩下的n−k
个数中有最多的不同的数,保证1≤n≤100,0≤k<n,0≤ai≤n.(对于任意1≤i≤n)
Input
多组数据(最多100
组)
对于每组数据:
第一行:一个数n
表示数的个数
接下来一行:n
个数,依次为a1,a2,…,an
接下来一行:一个数k
表示操作数
Output
对于每组数据:
输出最多剩下的不同的数的个数
Sample Input
4 1 3 1 2 1
Sample Output
3
#include<iostream>
#include<stdio.h>
#include<string.h>
using namespace std;
int main()
{
int n,i,sum;
int a,b,c;
int m[16000];
while(~scanf("%d",&n)){
sum=0;
i=0;
memset(m,0,sizeof(m));
while(n--)
{
scanf("%d",&a);
if(m[a]==0) i++;
m[a]++;
if(m[a]>1) sum++;
}
scanf("%d",&b);
if(b<=sum) cout<<i<<endl;
else cout<<i+sum-b<<endl;
}
return 0;
}