最初用的贪心思路,没问题,不过用了双重循环,果然超时了,后来换了一种思路,只要找到重复人数就可以了,反证法
#include <iostream>
#include <algorithm>
#define N 3005
int ar[N];
int n;
bool pred(int val)
{
return val!=0;
}
int main()
{
while (std::cin>>n){
for(int i=0;i!=n;i++){
std::cin>>ar[i];
}
std::sort(ar,ar+n);
for(int i=n-1;i>=0;i--){
if(ar[i]!=0){
for(int j=i-1;j>=0;j--){
if(ar[j]<ar[i]){
ar[j]=0;
}
}
}
}
std::cout<<std::count_if(ar,ar+n,pred)<<std::endl;
memset(ar,0,sizeof(ar));
}
}