#include<bits/stdc++.h> using namespace std; int wyniki[300007]; map<int, int> m; vector<int> v; int main() { cin.tie(0)->sync_with_stdio(0); int n; cin>>n; for(int i = 0; i < n; i++){ int a; cin>>a; m[a]++; } int maksorlik = 0; for(auto j:m){ v.push_back(j.second); maksorlik = max(maksorlik, j.second); } sort(v.begin(), v.end(), greater()); wyniki[1]=n; for(int i = 2; i <=n; i++){ if(i > maksorlik){ break; } int suma = 0; for(int j = 0; j < v.size(); j++){ int dodanie = v[j]/i; dodanie*=i; if(dodanie == 0){ break; } suma+=dodanie; } wyniki[i] = suma; } for(int i = 1; i <= n; i++){ cout<<wyniki[i]<<" "; } }
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 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 | #include<bits/stdc++.h> using namespace std; int wyniki[300007]; map<int, int> m; vector<int> v; int main() { cin.tie(0)->sync_with_stdio(0); int n; cin>>n; for(int i = 0; i < n; i++){ int a; cin>>a; m[a]++; } int maksorlik = 0; for(auto j:m){ v.push_back(j.second); maksorlik = max(maksorlik, j.second); } sort(v.begin(), v.end(), greater()); wyniki[1]=n; for(int i = 2; i <=n; i++){ if(i > maksorlik){ break; } int suma = 0; for(int j = 0; j < v.size(); j++){ int dodanie = v[j]/i; dodanie*=i; if(dodanie == 0){ break; } suma+=dodanie; } wyniki[i] = suma; } for(int i = 1; i <= n; i++){ cout<<wyniki[i]<<" "; } } |