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