#include <iostream> #include <vector> #include <unordered_map> using namespace std; int main() { int n; cin >> n; unordered_map<int, int> miasta; // (miasto, indeks miasta w tablicy ile_miasto) vector<int> ile_miasto; // ile razy miasto o danym indeksie sie pojawilo for (int i = 0; i < n; i++) { int curr; cin >> curr; auto iter = miasta.find(curr); if (iter != miasta.end()) { ile_miasto[miasta[curr]]++; } else { miasta[curr] = (int)ile_miasto.size(); ile_miasto.push_back(1); } } vector<int> ans(n, 0); for (const auto& element : ile_miasto) { for (int i = 0; i < element; i++) { ans[i] += element - element%(i+1); } } for (int i = 0; i < n; i++) { cout << ans[i] << " "; } cout << "\n"; 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 | #include <iostream> #include <vector> #include <unordered_map> using namespace std; int main() { int n; cin >> n; unordered_map<int, int> miasta; // (miasto, indeks miasta w tablicy ile_miasto) vector<int> ile_miasto; // ile razy miasto o danym indeksie sie pojawilo for (int i = 0; i < n; i++) { int curr; cin >> curr; auto iter = miasta.find(curr); if (iter != miasta.end()) { ile_miasto[miasta[curr]]++; } else { miasta[curr] = (int)ile_miasto.size(); ile_miasto.push_back(1); } } vector<int> ans(n, 0); for (const auto& element : ile_miasto) { for (int i = 0; i < element; i++) { ans[i] += element - element%(i+1); } } for (int i = 0; i < n; i++) { cout << ans[i] << " "; } cout << "\n"; return 0; } |