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