4 1 3 1 2 1
3Hintif 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.
用set先放所有的不重复的,如果k小于等于n-是s.size()就输出s.size(),否则就输出s.size()-(n-k)
代码:
#include <cstdio>
#include <algorithm>
#include <iostream>
#include <set>
using namespace std;
set<int > s;
int main(){
int n;
while(scanf("%d", &n) == 1){
s.clear();
int a;
for(int i = 0;i < n; ++ i){
scanf("%d", &a);
s.insert(a);
}
int k;
scanf("%d", &k);
int temp = n - s.size();
if(k <= temp){
cout << s.size()<<endl;
}
else{
cout << (s.size()-(k-temp))<<endl;
}
}
return 0;
}
原文:http://blog.csdn.net/shengweisong/article/details/45293445