題目大意

給你 $n$ 個數字 $a_1, a_2, \ldots, a_n$,請問重新排列以後最多可以有多少個 index 使得 $a’_{i+1} > a’_i$?

題解

把不同的 $a_i$ 蒐集起來變成一條一條的,所以最大的數量就是 $n$ 扣掉這些數字的最大頻率。

參考程式碼

// by tmt514
#include <algorithm>
#include <cmath>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <iostream>
#include <string>
#include <vector>
#define SZ(x) ((int)(x).size())
#define FOR(it, c) for(__typeof((c).begin()) it = (c).begin(); it != (c).end(); ++it)
using namespace std;
typedef long long LL;

int a[1005];
int main(void) {
  int n;
  scanf("%d", &n);
  for(int i=0;i<n;i++) {
    int x;
    scanf("%d", &x);
    a[x]++;
  }
  printf("%d\n", n - *max_element(a, a+1001));
  return 0;
}