#include <bits/stdc++.h>
using namespace std;
int liczb[500009],wyn,r=0;
vector<int> liczbs;
int main(){
cin.tie(0)->sync_with_stdio(0);
int n,l;
cin >> n;
if(n==1){
cout << 1;
return 0;
}
for(int i=0;i<n;i++){
cin >> l;
liczb[l]++;
}
for(int i=0;i<=n;i++){
if(liczb[i]!=0) liczbs.push_back(liczb[i]);
}
sort(liczbs.begin(),liczbs.end(),greater());
//for(int i=0;i<liczbs.size();i++) cout << liczbs[i];
//cout << endl;
if(liczbs.size()==1){
cout << 1;
return 0;
}
while(true){
//for(int i=0;i<liczbs.size();i++) cout << liczbs[i];
//cout << endl;
n=liczbs[r]-1;
//cout << n;
for(int i=0;i<n;i++){
liczbs[liczbs.size()-1]--;
if(r==liczbs.size()-1){
wyn++;
cout << wyn;
return 0;
}
if(liczbs.back()==0) liczbs.pop_back();
}
wyn++;
r++;
if(r==liczbs.size()-1){
wyn++;
break;
}
else if(r==liczbs.size()){
break;
}
}
cout << wyn;
}
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 50 51 52 53 54 | #include <bits/stdc++.h> using namespace std; int liczb[500009],wyn,r=0; vector<int> liczbs; int main(){ cin.tie(0)->sync_with_stdio(0); int n,l; cin >> n; if(n==1){ cout << 1; return 0; } for(int i=0;i<n;i++){ cin >> l; liczb[l]++; } for(int i=0;i<=n;i++){ if(liczb[i]!=0) liczbs.push_back(liczb[i]); } sort(liczbs.begin(),liczbs.end(),greater()); //for(int i=0;i<liczbs.size();i++) cout << liczbs[i]; //cout << endl; if(liczbs.size()==1){ cout << 1; return 0; } while(true){ //for(int i=0;i<liczbs.size();i++) cout << liczbs[i]; //cout << endl; n=liczbs[r]-1; //cout << n; for(int i=0;i<n;i++){ liczbs[liczbs.size()-1]--; if(r==liczbs.size()-1){ wyn++; cout << wyn; return 0; } if(liczbs.back()==0) liczbs.pop_back(); } wyn++; r++; if(r==liczbs.size()-1){ wyn++; break; } else if(r==liczbs.size()){ break; } } cout << wyn; } |
English