Untitled
unknown
plain_text
a year ago
1.1 kB
5
Indexable
void Gojo(){
int n;cin>>n;
vector<int> v;
map<int,int> mp;
For(n){
int x;cin>>x;
if(mp[x] == 0)v.push_back(x);
mp[x]++;
}
sort(v.begin(),v.end());
int mex= 0 , mx = v.size();
for(int i = 0; i < v.size() ; i++){
// cout << v[i] <<' ';
if(i != v[i]){
mx = i;
break;
}
}
v.clear(); int mn = mp[0];
for(int i = 1; i < mx ; i++){
if(mp[i] <= mn)v.push_back(i);
mn = min(mn,mp[i]);
}
if(mp[0] < 2){
cout << 0;
return;
}
int ans = mx * (mp[0]-1) , prev = mp[0]-1;
for(int i = 0 ; i< v.size(); i++){
int mex = mx;
int sum = 0;
int j = v[i];
while(j > 0){
while((mex * (mp[v[j]] - 1) + v[j] )+ v[j] * (mp[v[j-1]] - 1) > mex * (mp[v[j-1]] -1) && j > 0){
j--;
}
sum += mex * (mp[v[j]]-1) + v[j];
mex = v[j];
}
sum += mex *(mp[0]-1);
// cout << sum << endl;
ans = min (ans,sum);
}
cout << ans;
}Editor is loading...
Leave a Comment