#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; } |