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