CF1007A Reorder the Array
题目描述
给定一个整数数组。Vasya 可以对数组中的整数进行任意排列(即改变顺序)。他希望排列后,尽可能多的整数能够放在原本比它小的位置上。请你帮助 Vasya 找出最多能有多少个这样的整数。
例如,给定数组 $[10, 20, 30, 40]$,我们可以将其排列为 $[20, 40, 10, 30]$。此时,第 1 和第 2 个位置上的整数变大了($20>10$,$40>20$),而第 3 和第 4 个位置没有变大,所以对于这个排列,Vasya 想要最大化的数目等于 $2$。请参考第一个样例说明,那里还有一个更具代表性的测试用例。
请你帮助 Vasya 对整数进行排列,使得新数组中,比原数组同一位置上的整数更大的位置数最大。
输入格式
第一行包含一个整数 $n$($1 \leq n \leq 10^5$),表示数组的长度。
第二行包含 $n$ 个整数 $a_1, a_2, \ldots, a_n$($1 \leq a_i \leq 10^9$),表示数组的元素。
输出格式
输出一个整数,表示经过排列后,能够放在原本比它小的位置上的数组元素的最大数量。
说明/提示
在第一个样例中,一个最优的排列是 $[1, 5, 5, 3, 10, 1, 1]$。在第 2 到第 5 个位置上的元素都变大了,所以对于这个排列,答案是 $4$。
在第二个样例中,无论如何排列,都无法使任何元素变大,所以答案是 $0$。
由 ChatGPT 4.1 翻译