#include <iostream>
#include <algorithm>
using namespace std;
int n, a, cnt[500002];
int main() {
ios_base::sync_with_stdio(0);
cin.tie(0);
cin >> n;
for (int i=0; i<n; i++) {
cin >> a;
cnt[a]++;
}
sort(cnt+1, cnt+n+1, greater<int>());
int k = 0, wynik = 0;
while (cnt[k+1]) k++;
for (int i=1; i<=k; i++) {
while (k > i && cnt[i] > cnt[k]) {
cnt[i] -= cnt[k];
k--;
}
if (k > i) cnt[k] -= cnt[i] - 1;
wynik++;
}
cout << wynik << endl;
}
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 | #include <iostream> #include <algorithm> using namespace std; int n, a, cnt[500002]; int main() { ios_base::sync_with_stdio(0); cin.tie(0); cin >> n; for (int i=0; i<n; i++) { cin >> a; cnt[a]++; } sort(cnt+1, cnt+n+1, greater<int>()); int k = 0, wynik = 0; while (cnt[k+1]) k++; for (int i=1; i<=k; i++) { while (k > i && cnt[i] > cnt[k]) { cnt[i] -= cnt[k]; k--; } if (k > i) cnt[k] -= cnt[i] - 1; wynik++; } cout << wynik << endl; } |
English