#include<bits/stdc++.h>
using namespace std;
const int N = 300008;
int n;
vector<int> poczta;
int a[N];
int wynik [N];
int main(){
ios_base::sync_with_stdio(0);
cin.tie(0);
cin >> n;
for(int i=0; i<n; i++){
cin >> a[i];
}
sort(a, a+n);
int licznik=1;
for(int i=1; i<n; i++){
if(a[i]==a[i-1]) licznik++;
else{
poczta.push_back(licznik);
licznik=1;
}
}
poczta.push_back(licznik);
for(int znak : poczta){
for(int i=1; i<=znak; i++){
wynik[znak/i]++;
}
}
wynik[n+1]=0;
for(int i=n; i>0; i--){
wynik[i]+=wynik[i+1];
}
for(int i=1; i<=n; i++){
cout << wynik[i]*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 | #include<bits/stdc++.h> using namespace std; const int N = 300008; int n; vector<int> poczta; int a[N]; int wynik [N]; int main(){ ios_base::sync_with_stdio(0); cin.tie(0); cin >> n; for(int i=0; i<n; i++){ cin >> a[i]; } sort(a, a+n); int licznik=1; for(int i=1; i<n; i++){ if(a[i]==a[i-1]) licznik++; else{ poczta.push_back(licznik); licznik=1; } } poczta.push_back(licznik); for(int znak : poczta){ for(int i=1; i<=znak; i++){ wynik[znak/i]++; } } wynik[n+1]=0; for(int i=n; i>0; i--){ wynik[i]+=wynik[i+1]; } for(int i=1; i<=n; i++){ cout << wynik[i]*i<<" "; } } |
English