#include<iostream> #include<map> #include <vector> #include <algorithm> using namespace std; int main() { int n; cin >> n; map<int,int> stampsCount; int x; for (int i = 0; i < n; i++) { cin >> x; stampsCount[x]++; } map<int,int> stampsCount2; for (const auto& pair : stampsCount) { stampsCount2[pair.second]++; } // Copy the elements to a vector vector<pair<int, int>> myList(stampsCount2.begin(), stampsCount2.end()); // sort(myList.begin(), myList.end(), compareByValueAsc); int result[n]; for (int i = 0; i < n; i++) { result[i] = 0; } for (const auto& pair : stampsCount2) { for (int j = 1; j <= pair.first; j++) { result[j-1] += pair.second * j * (pair.first / j); } } for (int i = 0; i < n; i++) { cout << result[i] << " "; } 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 45 46 47 48 49 50 | #include<iostream> #include<map> #include <vector> #include <algorithm> using namespace std; int main() { int n; cin >> n; map<int,int> stampsCount; int x; for (int i = 0; i < n; i++) { cin >> x; stampsCount[x]++; } map<int,int> stampsCount2; for (const auto& pair : stampsCount) { stampsCount2[pair.second]++; } // Copy the elements to a vector vector<pair<int, int>> myList(stampsCount2.begin(), stampsCount2.end()); // sort(myList.begin(), myList.end(), compareByValueAsc); int result[n]; for (int i = 0; i < n; i++) { result[i] = 0; } for (const auto& pair : stampsCount2) { for (int j = 1; j <= pair.first; j++) { result[j-1] += pair.second * j * (pair.first / j); } } for (int i = 0; i < n; i++) { cout << result[i] << " "; } return 0; } |