#include <bits/stdc++.h> using namespace std; int main () { int n; cin>>n; int arr [n] = {0}; for (int i = 0; i < n; ++i) { int temp; cin>>temp; arr[temp-1]++; } int count[n] = {}; for (int i = 0; i < n; ++i) { count[arr[i]]++; } int counter = 0; int i=n-1; for (; i >=0; --i) { //cout<<i<<" "<<(2*i-1)*count[i]<<"\n"; if (n<=0) break; n -= (2*i-1)*count[i]; counter += count[i]; } while (n+2*(i+1)-1<=0) { n+= 2*(i+1)-1; counter--; } cout<<counter<<endl; 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 | #include <bits/stdc++.h> using namespace std; int main () { int n; cin>>n; int arr [n] = {0}; for (int i = 0; i < n; ++i) { int temp; cin>>temp; arr[temp-1]++; } int count[n] = {}; for (int i = 0; i < n; ++i) { count[arr[i]]++; } int counter = 0; int i=n-1; for (; i >=0; --i) { //cout<<i<<" "<<(2*i-1)*count[i]<<"\n"; if (n<=0) break; n -= (2*i-1)*count[i]; counter += count[i]; } while (n+2*(i+1)-1<=0) { n+= 2*(i+1)-1; counter--; } cout<<counter<<endl; return 0; } |