#include <cstdio>
#include <unordered_map>
#define MAX 300200
using namespace std;
int n;
int buf[MAX];
unordered_map<int,int> c,c2;
int main() {
scanf("%d", &n);
for(int i=0;i<n;i++) {
scanf("%d", &buf[i]);
c[buf[i]]+=1;
}
for (auto v: c) c2[v.second]+=1;
for(int k=1;k<=n;k++) {
int result = 0;
for (auto v: c2) {
result += v.second * (v.first/k)*k;
}
printf("%d ", result);
}
printf("\n");
}
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 | #include <cstdio> #include <unordered_map> #define MAX 300200 using namespace std; int n; int buf[MAX]; unordered_map<int,int> c,c2; int main() { scanf("%d", &n); for(int i=0;i<n;i++) { scanf("%d", &buf[i]); c[buf[i]]+=1; } for (auto v: c) c2[v.second]+=1; for(int k=1;k<=n;k++) { int result = 0; for (auto v: c2) { result += v.second * (v.first/k)*k; } printf("%d ", result); } printf("\n"); } |
English