#include <bits/stdc++.h>
using namespace std;
constexpr int maxn = 3e5+2;
int n, mx, arr[maxn], res, il;
map <int,int> mp;
int main()
{
ios_base::sync_with_stdio(0);
cin.tie(0); cout.tie(0);
cin >> n;
for(int i=1, a; i<=n; i++)
{
cin >> a;
mp[a]++;
mx = max(mx, mp[a]);
}
for(auto x : mp) arr[x.second]++;
for(int i=mx-1; i>0; i--) arr[i] = arr[i+1]+arr[i];
for(int k=1; k<=n; k++)
{
res = 0; il = 0;
for(int i=(mx/k); i>0; i--)
{
res += ((arr[i*k]-il)*(i*k));
il += (arr[i*k]-il);
}
cout << res << ' ';
}
}
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 | #include <bits/stdc++.h> using namespace std; constexpr int maxn = 3e5+2; int n, mx, arr[maxn], res, il; map <int,int> mp; int main() { ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); cin >> n; for(int i=1, a; i<=n; i++) { cin >> a; mp[a]++; mx = max(mx, mp[a]); } for(auto x : mp) arr[x.second]++; for(int i=mx-1; i>0; i--) arr[i] = arr[i+1]+arr[i]; for(int k=1; k<=n; k++) { res = 0; il = 0; for(int i=(mx/k); i>0; i--) { res += ((arr[i*k]-il)*(i*k)); il += (arr[i*k]-il); } cout << res << ' '; } } |
English