题目链接
题目大意:
给你一个序列,你可以生成这个序列的任意一个排列,对于某个排列,如果这个排列上某个位置的值大于原序列的值,那么就会产生1
的贡献,问你最大能有多少贡献。
代码:
#include<iostream>
#include<cstring>
#include<cstdio>
#include<algorithm>
using namespace std;
const int maxn = 100005;
int a[maxn], n, r = 1, ans;
int main()
{
cin >> n;
for (int i = 1; i <= n; i++)
cin >> a[i];
sort(a + 1, a + 1 + n);
for (int i = 1; i <= n; i++)
{
while (r <= n && a[r] <= a[i])
r++;
if (r <= n)
ans++, r++;
}
cout << ans << endl;
return 0;
}