#include<bits/stdc++.h>
using namespace std;
int main(){
    ios_base::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);
    int n;
    cin >> n;
    int znaczki[n];
    for(int i = 0; i < n; i++){
        cin >> znaczki[i];
    }
    sort(znaczki, znaczki + n);
    int poprzednia_wartosc;
    poprzednia_wartosc = 0;
    vector <long long> ilosci;
    int x = -1;
    for(int i = 0; i < n; i++){
        if(znaczki[i] == poprzednia_wartosc){
            ilosci[x] += 1;
        }
        else{
            x += 1;
            ilosci.push_back(1);
            poprzednia_wartosc = znaczki[i];
        }
    }
    ilosci.push_back(2000000000);
    int wynik = 0;
    int w;
    vector <long long> wziete;
        for(int d = 0; d <= x; d++){
            wziete.push_back(0);
    }
    int wyniki[n];
    for(int i = n; i > 0; i--){
        for(int d = 0; d < x + 1; d++){
        if(wziete[d]){
            ilosci[d] += wziete[d];
            wynik -= wziete[d];
            wziete[d] += ilosci[d] / i;
            wynik += ilosci[d] / i * i;
            ilosci[d]  -= ilosci[d] / i * i;
        }
        else{
            if(ilosci[d] == i){
                wziete[d] = 1;
                wynik += i;
                ilosci[d] -= i;
            }
        }}
        wyniki[i - 1] = wynik;
    }
    for(int i = 0; i < n; i++){
        cout << wyniki[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 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60  | #include<bits/stdc++.h> using namespace std; int main(){ ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0); int n; cin >> n; int znaczki[n]; for(int i = 0; i < n; i++){ cin >> znaczki[i]; } sort(znaczki, znaczki + n); int poprzednia_wartosc; poprzednia_wartosc = 0; vector <long long> ilosci; int x = -1; for(int i = 0; i < n; i++){ if(znaczki[i] == poprzednia_wartosc){ ilosci[x] += 1; } else{ x += 1; ilosci.push_back(1); poprzednia_wartosc = znaczki[i]; } } ilosci.push_back(2000000000); int wynik = 0; int w; vector <long long> wziete; for(int d = 0; d <= x; d++){ wziete.push_back(0); } int wyniki[n]; for(int i = n; i > 0; i--){ for(int d = 0; d < x + 1; d++){ if(wziete[d]){ ilosci[d] += wziete[d]; wynik -= wziete[d]; wziete[d] += ilosci[d] / i; wynik += ilosci[d] / i * i; ilosci[d] -= ilosci[d] / i * i; } else{ if(ilosci[d] == i){ wziete[d] = 1; wynik += i; ilosci[d] -= i; } }} wyniki[i - 1] = wynik; } for(int i = 0; i < n; i++){ cout << wyniki[i] << ' '; } }  | 
            
        
                    English