#include<iostream> #include<map> #include<vector> #include<algorithm> using namespace std; int main() { ios_base::sync_with_stdio(0); int n; long miasto; map<long, int> wejscie; vector<int> ilosci; int ilosc, znacznik, wynik; cin >> n; for(int i = 0; i < n; ++i) { cin >> miasto; ++wejscie[miasto]; } for(map<long, int>::iterator i = wejscie.begin(); i != wejscie.end(); ++i) ilosci.push_back(i->second); sort(ilosci.begin(), ilosci.end()); ilosc = ilosci.size(); cout << n << " "; znacznik = 0; for(int i = 2; i <= n; ++i) { while((znacznik < ilosc) && (ilosci[znacznik] < i)) ++znacznik; if(znacznik >= ilosc) { cout << "0 "; continue; } wynik = 0; for(int j = znacznik; j < ilosc; ++j) wynik += (int(ilosci[j] / i) * i); cout << wynik << " "; } 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 39 40 41 42 43 44 | #include<iostream> #include<map> #include<vector> #include<algorithm> using namespace std; int main() { ios_base::sync_with_stdio(0); int n; long miasto; map<long, int> wejscie; vector<int> ilosci; int ilosc, znacznik, wynik; cin >> n; for(int i = 0; i < n; ++i) { cin >> miasto; ++wejscie[miasto]; } for(map<long, int>::iterator i = wejscie.begin(); i != wejscie.end(); ++i) ilosci.push_back(i->second); sort(ilosci.begin(), ilosci.end()); ilosc = ilosci.size(); cout << n << " "; znacznik = 0; for(int i = 2; i <= n; ++i) { while((znacznik < ilosc) && (ilosci[znacznik] < i)) ++znacznik; if(znacznik >= ilosc) { cout << "0 "; continue; } wynik = 0; for(int j = znacznik; j < ilosc; ++j) wynik += (int(ilosci[j] / i) * i); cout << wynik << " "; } return 0; } |