#include "bits/stdc++.h"
using namespace std;
#define ff first
#define ss second
#define mp make_pair
#define pb push_back
using ll=long long;
using cll=const ll;
using pll=pair<ll,ll>;
using pii=pair<int,int>;
int inp[500'005];
int main() {
ios_base::sync_with_stdio(false); cin.tie(NULL); //cout.tie(NULL);
int n;
cin >> n;
deque<int> v;
for (int i = 0; i < n; i++) {
int x;
cin >> x;
inp[x]++;
}
for(int i = 0; i < 500'005; i++){
if(inp[i] > 0) v.pb(inp[i]);
}
sort(v.begin(), v.end());
int ans = 0;
while(!v.empty()){
ans++;
int ileodj = v.back()-1;
v.pop_back();
while(!v.empty() && v.front() <= ileodj){
ileodj -= v.front();
v.pop_front();
}
if(v.empty()) break;
v.front() -= ileodj;
}
cout << ans << 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 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 | #include "bits/stdc++.h" using namespace std; #define ff first #define ss second #define mp make_pair #define pb push_back using ll=long long; using cll=const ll; using pll=pair<ll,ll>; using pii=pair<int,int>; int inp[500'005]; int main() { ios_base::sync_with_stdio(false); cin.tie(NULL); //cout.tie(NULL); int n; cin >> n; deque<int> v; for (int i = 0; i < n; i++) { int x; cin >> x; inp[x]++; } for(int i = 0; i < 500'005; i++){ if(inp[i] > 0) v.pb(inp[i]); } sort(v.begin(), v.end()); int ans = 0; while(!v.empty()){ ans++; int ileodj = v.back()-1; v.pop_back(); while(!v.empty() && v.front() <= ileodj){ ileodj -= v.front(); v.pop_front(); } if(v.empty()) break; v.front() -= ileodj; } cout << ans << endl; return 0; } |
English