#include <bits/stdc++.h> using namespace std; int main(){ int n=(cin>>n,n); vector<int> tab(n+1,0); for(int i=0,a;i<n;i++) tab[(cin>>a,a)]++; sort(tab.begin(), tab.end()); int L=0, R=tab.size()-1; int res=0; while(L<=R){ //cout <<L<<" "<<R<<endl; res++; int sum=tab[R--]-1; while(L<=R && sum >= tab[L]) sum -= tab[L++]; tab[L] -= sum; } cout << res <<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 30 | #include <bits/stdc++.h> using namespace std; int main(){ int n=(cin>>n,n); vector<int> tab(n+1,0); for(int i=0,a;i<n;i++) tab[(cin>>a,a)]++; sort(tab.begin(), tab.end()); int L=0, R=tab.size()-1; int res=0; while(L<=R){ //cout <<L<<" "<<R<<endl; res++; int sum=tab[R--]-1; while(L<=R && sum >= tab[L]) sum -= tab[L++]; tab[L] -= sum; } cout << res <<endl; } |