实际上就是给n个数形成多个递增的链,如果是相等的数自然不放在一起,因为这样是无法贡献值的。
#include <iostream>
#include <string>
#include <cstdio>
#include <algorithm>
#include <vector>
#include <stack>
#include <queue>
#define MAX 1005
#define mod 998244353ll
#define INF 0x3f3f3f3f
#define ll long long
using namespace std;
int a[1005];
int main() {
freopen("a.txt", "r", stdin);
freopen("b.txt", "w", stdout);
int n, x;
cin >> n;
for (int i = 1; i <= n; ++i) {
scanf("%d", &x);
a[x]++;
}
int ans = 0;
while (n) {
int c = 0;
for (int i = 1; i <= 1000; ++i) {
if (a[i]) {
n--;
a[i]--;
c++;
}
}
ans = ans + c - 1;
}
cout << ans << endl;
return 0;
}