#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; } |
English