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