// lid "Liderzy" [B] - Jakub Bareja
#include <bits/stdc++.h>
using namespace std;
constexpr int MAX_N = 5e5+7;
int n; // długość ciągu
int ile[MAX_N]; // ile[i] - ile liczb i w ciągu
vector<int> kan; // kandydaci na liderów
bool por(int a, int b) {
return ile[a] > ile[b];
}
int main() {
scanf("%d",&n);
for(int i=0; i<n; i++) {
int a; scanf("%d",&a);
if(!ile[a]) kan.push_back(a);
ile[a]++;
}
sort(kan.begin(),kan.end(),por);
int zost = n;
for(int i=0; i<kan.size(); i++) {
zost -= ile[kan[i]] * 2 - 1;
if(zost <= 0) {
printf("%d\n",i+1);
return 0;
}
}
printf("%d\n", kan.size());
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 | // lid "Liderzy" [B] - Jakub Bareja #include <bits/stdc++.h> using namespace std; constexpr int MAX_N = 5e5+7; int n; // długość ciągu int ile[MAX_N]; // ile[i] - ile liczb i w ciągu vector<int> kan; // kandydaci na liderów bool por(int a, int b) { return ile[a] > ile[b]; } int main() { scanf("%d",&n); for(int i=0; i<n; i++) { int a; scanf("%d",&a); if(!ile[a]) kan.push_back(a); ile[a]++; } sort(kan.begin(),kan.end(),por); int zost = n; for(int i=0; i<kan.size(); i++) { zost -= ile[kan[i]] * 2 - 1; if(zost <= 0) { printf("%d\n",i+1); return 0; } } printf("%d\n", kan.size()); return 0; } |
English