#include <bits/stdc++.h> using namespace std; #define st first #define nd second typedef long long int lli; const int MAXN = 300005; std::map<int, int> m; lli res[MAXN]; int main() { int n; scanf("%d", &n); for (int i=0; i<n; i++) { int a; scanf("%d", &a); m[a] = m[a]+1; } for (auto p : m) { int cnt = p.nd; for (int i=1; i<=cnt; i++) { res[i] += cnt - cnt%i; } } for (int i=1; i<n; i++) printf("%lld ", res[i]); printf("%lld\n", res[n]); return 0; }
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 | #include <bits/stdc++.h> using namespace std; #define st first #define nd second typedef long long int lli; const int MAXN = 300005; std::map<int, int> m; lli res[MAXN]; int main() { int n; scanf("%d", &n); for (int i=0; i<n; i++) { int a; scanf("%d", &a); m[a] = m[a]+1; } for (auto p : m) { int cnt = p.nd; for (int i=1; i<=cnt; i++) { res[i] += cnt - cnt%i; } } for (int i=1; i<n; i++) printf("%lld ", res[i]); printf("%lld\n", res[n]); return 0; } |