#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<<" "; } } |