题意
给你一个长度为n的数组a,对他进行重排(假设重拍后为b数组),最多可以使得多少个位置b[i]>a[i]?
题解
n - 出现最多的那个元素的个数就OK,因为数据较大所以用map桶排。
或者模拟也行。
#include <bits/stdc++.h>
using namespace std;
const int MAXN = 1e5+5;
const int INF = 0x3f3f3f3f;
int n;
map<int, int> mp;
int main()
{
scanf("%d", &n);
int MAX = -INF;
for (int i = 0; i < n; i++)
{
int t; scanf("%d", &t);
MAX = max(MAX, ++mp[t]);
}
printf("%d\n", n-MAX);
return 0;
}
/*
5
1 2 3 4 5
*/