best code 2015/4/26 第一题,简直水的不行
wld有n 个数(a1,a2,...,an) ,他希望进行k次删除一个数的操作,使得最后剩下的n?k 个数中有最多的不同的数,保证1≤n≤100,0≤k<n,1≤ai≤n (对于任意1≤i≤n )
多组数据(最多100 组) 对于每组数据: 第一行:一个数n 表示数的个数 接下来一行:n 个数,依次为a1,a2,…,an 接下来一行:一个数k 表示操作数
对于每组数据: 输出最多剩下的不同的数的个数
4 1 3 1 2 1
3
如果删去第一个1: 在[3,1,2]中有3个不同的数 如果删去3: 在[1,1,2]中有2个不同的数 如果删去第二个1: 在[1,3,2]中有3个不同的数 如果删去2: 在[1,3,1]中有1个不同的数
#include<iostream> #include<cstring> #define maxn 100+5 using namespace std; int mapp[maxn]; int main() { int n; while(cin>>n) { int sum=0; memset(mapp,0,sizeof(mapp)); for(int i=0;i<n;i++) { int x; cin>>x; if(!mapp[x]) sum++; mapp[x]++; } int k; cin>>k; k-=(n-sum); if(k<=0) cout<<sum<<endl; else cout<<sum-k<<endl; } return 0; }
原文:http://blog.csdn.net/zafkiel_nightmare/article/details/45309143