#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
void input(int & n, vector<int> & vec) {
cin >> n;
vec.resize(n,0);
for(int i = 0; i < n; i++) {
cin >> vec[i];
}
}
void count(int const & n, vector<int> const & vec, vector<int> & cnt) {
cnt.resize(n+1, 0);
for(auto const & v : vec) {
cnt[v]++;
}
sort(cnt.begin(), cnt.end(), greater<int>());
}
int get_result(vector<int> & cnt) {
int result = 0;
int beg = 0;
int end = cnt.size() - 1;
while(beg < end) {
int temp = 0;
while((cnt[beg] > temp + 1) && (beg < end)) {
if(temp + cnt[end] < cnt[beg]) {
temp += cnt[end];
cnt[end] = 0;
end--;
} else {
int diff = cnt[beg] - temp - 1;
temp += diff;
cnt[end] -= diff;
}
}
result++;
beg++;
}
if(cnt[beg] > 0) {
result++;
}
return result;
}
void solve() {
int n;
vector<int> vec;
input(n, vec);
vector<int> cnt;
count(n, vec, cnt);
cout << get_result(cnt) << "\n";
}
int main(){
ios_base::sync_with_stdio(0);
cin.tie(0);
solve();
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 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 | #include <iostream> #include <vector> #include <algorithm> using namespace std; void input(int & n, vector<int> & vec) { cin >> n; vec.resize(n,0); for(int i = 0; i < n; i++) { cin >> vec[i]; } } void count(int const & n, vector<int> const & vec, vector<int> & cnt) { cnt.resize(n+1, 0); for(auto const & v : vec) { cnt[v]++; } sort(cnt.begin(), cnt.end(), greater<int>()); } int get_result(vector<int> & cnt) { int result = 0; int beg = 0; int end = cnt.size() - 1; while(beg < end) { int temp = 0; while((cnt[beg] > temp + 1) && (beg < end)) { if(temp + cnt[end] < cnt[beg]) { temp += cnt[end]; cnt[end] = 0; end--; } else { int diff = cnt[beg] - temp - 1; temp += diff; cnt[end] -= diff; } } result++; beg++; } if(cnt[beg] > 0) { result++; } return result; } void solve() { int n; vector<int> vec; input(n, vec); vector<int> cnt; count(n, vec, cnt); cout << get_result(cnt) << "\n"; } int main(){ ios_base::sync_with_stdio(0); cin.tie(0); solve(); return 0; } |
English