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