#include <bits/stdc++.h> using namespace std; int n, a, ile, liczenie, j; int zlicz[500000]; int zlicz2[500000]; unordered_set<int> ktoresa; int main() { ios_base::sync_with_stdio(false); cin.tie(NULL); cin >> n; for (int i = 0; i < n; i++) { cin >> a; zlicz[a - 1]++; ktoresa.insert(a - 1); } int i = 0; for (int cos : ktoresa) zlicz2[i++] = zlicz[cos]; sort(zlicz2, zlicz2 + ktoresa.size()); //for (i = 0; i < ktoresa.size(); i++) // cout << zlicz2[i] << ' '; //cout << '\n'; for (i = ktoresa.size() - 1; i >= 0; i--) { a = zlicz2[i]; if (a == 0) goto koniec; zlicz2[i] = 0; liczenie = 0; ile++; while (liczenie < a - 1) { if (j == ktoresa.size()) goto koniec; if (zlicz2[j] == 0) goto koniec; if (liczenie + zlicz2[j] <= a - 1) { liczenie += zlicz2[j]; zlicz2[j] = 0; j++; } else { zlicz2[j] = a - 1 - liczenie; liczenie = a - 1; } } //for (int x = 0; x < ktoresa.size(); x++) // cout << zlicz2[x] << ' '; //cout << '\n'; } koniec: cout << ile; 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 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 | #include <bits/stdc++.h> using namespace std; int n, a, ile, liczenie, j; int zlicz[500000]; int zlicz2[500000]; unordered_set<int> ktoresa; int main() { ios_base::sync_with_stdio(false); cin.tie(NULL); cin >> n; for (int i = 0; i < n; i++) { cin >> a; zlicz[a - 1]++; ktoresa.insert(a - 1); } int i = 0; for (int cos : ktoresa) zlicz2[i++] = zlicz[cos]; sort(zlicz2, zlicz2 + ktoresa.size()); //for (i = 0; i < ktoresa.size(); i++) // cout << zlicz2[i] << ' '; //cout << '\n'; for (i = ktoresa.size() - 1; i >= 0; i--) { a = zlicz2[i]; if (a == 0) goto koniec; zlicz2[i] = 0; liczenie = 0; ile++; while (liczenie < a - 1) { if (j == ktoresa.size()) goto koniec; if (zlicz2[j] == 0) goto koniec; if (liczenie + zlicz2[j] <= a - 1) { liczenie += zlicz2[j]; zlicz2[j] = 0; j++; } else { zlicz2[j] = a - 1 - liczenie; liczenie = a - 1; } } //for (int x = 0; x < ktoresa.size(); x++) // cout << zlicz2[x] << ' '; //cout << '\n'; } koniec: cout << ile; return 0; } |