#include <bits/stdc++.h> using namespace std; int main(){ ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); int n; cin >> n; vector <int> freq(n+1); for(int i = 1; i<=n; ++i){ int x; cin >> x; freq[x]++; } vector <int> V; for(int i = 1; i<=n; ++i){ if(freq[i]) V.push_back(freq[i]); } sort(V.begin(), V.end()); deque <int> D; for(auto p: V){ D.push_back(p); } int res = 0; while(!D.empty()){ int act = 0; while(D.size() > 1){ if(act + D.front() < D.back()){ act += D.front(); D.pop_front(); }else{ D.front() -= D.back() - act - 1; break; } } D.pop_back(); res++; } cout << res << "\n"; }
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 | #include <bits/stdc++.h> using namespace std; int main(){ ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); int n; cin >> n; vector <int> freq(n+1); for(int i = 1; i<=n; ++i){ int x; cin >> x; freq[x]++; } vector <int> V; for(int i = 1; i<=n; ++i){ if(freq[i]) V.push_back(freq[i]); } sort(V.begin(), V.end()); deque <int> D; for(auto p: V){ D.push_back(p); } int res = 0; while(!D.empty()){ int act = 0; while(D.size() > 1){ if(act + D.front() < D.back()){ act += D.front(); D.pop_front(); }else{ D.front() -= D.back() - act - 1; break; } } D.pop_back(); res++; } cout << res << "\n"; } |