#include <bits/stdc++.h>
using namespace std;
const int MAX=3e5+7;
map<long long,int>m;
int n,it,cres,tab[MAX];
long long a;
bool Sort(int a,int b){
return a>b;
}
int main(){
cin>>n;
for(int i=0;i<n;i++){
cin>>a;
if(m[a]==0){
it++;
m[a]=it;
}
tab[m[a]]++;
}
sort(tab,tab+it+1,Sort);
it--;
for(int i=0;i<n;i++){
cres=0;
for(int j=0;j<=it;j++){
cres+=tab[j]-(tab[j]%(i+1));
if(tab[j]<i+1)
it=j;
}
cout<<cres<<" ";
}
}
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | #include <bits/stdc++.h> using namespace std; const int MAX=3e5+7; map<long long,int>m; int n,it,cres,tab[MAX]; long long a; bool Sort(int a,int b){ return a>b; } int main(){ cin>>n; for(int i=0;i<n;i++){ cin>>a; if(m[a]==0){ it++; m[a]=it; } tab[m[a]]++; } sort(tab,tab+it+1,Sort); it--; for(int i=0;i<n;i++){ cres=0; for(int j=0;j<=it;j++){ cres+=tab[j]-(tab[j]%(i+1)); if(tab[j]<i+1) it=j; } cout<<cres<<" "; } } |
English