#include <iostream>
#include <algorithm>
#include <vector>
int main(){
std::ios_base::sync_with_stdio(false);
std::cin.tie(0);
int n;
std::cin>>n;
int t[n], cnt[n+1];
for (int i=1; i<=n; ++i) cnt[i]=0;
for (size_t i=0; i<n; ++i){
std::cin>>t[i];
++cnt[t[i]];
}
std::vector<int> s;
for (size_t i=1; i<=n; ++i)s.push_back(cnt[i]);
std::sort(s.begin(),s.end());
int i=0, j=s.size()-1, res=0;
while (true){
int ile=s[j];
while (s[i]<ile){
ile-=s[i];
++i;
}
s[i]-=(ile-1);
if (i==j){
std::cout<<res+1<<'\n';
return 0;
}
--j;
++res;
}
}
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 | #include <iostream> #include <algorithm> #include <vector> int main(){ std::ios_base::sync_with_stdio(false); std::cin.tie(0); int n; std::cin>>n; int t[n], cnt[n+1]; for (int i=1; i<=n; ++i) cnt[i]=0; for (size_t i=0; i<n; ++i){ std::cin>>t[i]; ++cnt[t[i]]; } std::vector<int> s; for (size_t i=1; i<=n; ++i)s.push_back(cnt[i]); std::sort(s.begin(),s.end()); int i=0, j=s.size()-1, res=0; while (true){ int ile=s[j]; while (s[i]<ile){ ile-=s[i]; ++i; } s[i]-=(ile-1); if (i==j){ std::cout<<res+1<<'\n'; return 0; } --j; ++res; } } |
English