#include<bits/stdc++.h>
using namespace std;
const int MAXX=1e5*5+5;
int tab[MAXX];
int cmp(int a, int b){
return tab[a]>tab[b];
}
int main(){
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
int n;
cin>>n;
for(int i=0;i<n;i++){
int a;
cin>>a;
tab[a]++;
}
vector<int>liczby;
for(int i=0;i<=n+2;i++){
liczby.push_back(i);
}
sort(liczby.begin(), liczby.end(), cmp);
//for(auto x : liczby){
// cout<<x<<" ";
//}
int p=0;
int k=n;
int wynik=1;
int suma=0;
while(p<k){
//cout<<liczby[p]<<" "<<liczby[k]<<" ";
//cout<<tab[liczby[p]]<<" "<<tab[liczby[k]]<<"\n";
suma+=tab[liczby[k]];
if(tab[liczby[p]]>suma){
k--;
}
if(tab[liczby[p]]<=suma){
wynik++;
tab[liczby[k]]=suma-tab[liczby[p]]+1;
suma=0;
//cout<<tab[liczby[k]]<<" ";
p++;
}
}
cout<<wynik<<"\n";
return 0;
}
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 | #include<bits/stdc++.h> using namespace std; const int MAXX=1e5*5+5; int tab[MAXX]; int cmp(int a, int b){ return tab[a]>tab[b]; } int main(){ ios::sync_with_stdio(0); cin.tie(0); cout.tie(0); int n; cin>>n; for(int i=0;i<n;i++){ int a; cin>>a; tab[a]++; } vector<int>liczby; for(int i=0;i<=n+2;i++){ liczby.push_back(i); } sort(liczby.begin(), liczby.end(), cmp); //for(auto x : liczby){ // cout<<x<<" "; //} int p=0; int k=n; int wynik=1; int suma=0; while(p<k){ //cout<<liczby[p]<<" "<<liczby[k]<<" "; //cout<<tab[liczby[p]]<<" "<<tab[liczby[k]]<<"\n"; suma+=tab[liczby[k]]; if(tab[liczby[p]]>suma){ k--; } if(tab[liczby[p]]<=suma){ wynik++; tab[liczby[k]]=suma-tab[liczby[p]]+1; suma=0; //cout<<tab[liczby[k]]<<" "; p++; } } cout<<wynik<<"\n"; return 0; } |
English