Beautiful Paintings
time limit per test 1 second
memory limit per test 256 megabytes
input standard input
output standard output
There are n pictures delivered for the new exhibition. The i-th painting has beauty ai. We know that a visitor becomes happy every time he passes from a painting to a more beautiful one.
We are allowed to arranged pictures in any order. What is the maximum possible number of times the visitor may become happy while passing all pictures from first to last? In other words, we are allowed to rearrange elements of a in any order. What is the maximum possible number of indices i (1 ≤ i ≤ n - 1), such that ai + 1 > ai.
Input
The first line of the input contains integer n (1 ≤ n ≤ 1000) — the number of painting.
The second line contains the sequence a1, a2, ..., an (1 ≤ ai ≤ 1000), where ai means the beauty of the i-th painting.
Output
Print one integer — the maximum possible number of neighbouring pairs, such that ai + 1 > ai, after the optimal rearrangement.
Examples
input
5
20 30 10 50 40
output
4
input
4
200 100 100 200
output
2
Note
In the first sample, the optimal order is: 10, 20, 30, 40, 50.
In the second sample, the optimal order is: 100, 200, 100, 200.
题解
题的大意是:小明准备了一堆毛绒玩偶要送给小红当乱七八糟各种节日的礼物,小红喜欢大的玩偶,越大越喜欢。所以小明就想,从小的开始送,下次送比这次大一点的,小红就开心一点。小红答应如果小明让她开心520次就和他在一起,钢铁直男小明暂时只想到这一种让小红开心的方法,但他还不知道他现在买的这些玩偶能让小红开心几次,只知道他现在所有玩偶的尺寸。所以,苦X的我们又要开始算了
这个题让我想到很久以前的一道排序?题,那道题大致是:给一堆乱七八糟的数据,让从小到大排列,重复的在下一行继续升序排列,直到排完。和这道题简直不要再一样,唯一区别是,那道题是输出所有的排列,这道题是输出次数。次数,并不是普通的次数,而是2.0版的次数,比如数列1.2,开心次数为1,数列1.2.5.7.9,开心次数为4,也就是说,这个次数是这一行的数的个数-1,(就像五手指几个空隙一样),每行加起来就是最终答案
# include <cstdio>
# include <algorithm>
# include <cstring>
using namespace std;
const int maxn = 1e3 + 10;
int main()
{
int n;
scanf("%d",&n);
int a[maxn];
for(int i=0;i<n;i++) scanf("%d",&a[i]);
sort(a,a+n);
int mark = 0, flag = -1, st = 0;
while(st < n)
{
for(int i=0;i<n;i++)
{
if(a[i] > flag)
{
mark ++;
flag = a[i];
a[i] = -1;
st++;
}
}
mark--;
flag = -1;
}
printf("%d\n",mark);
return 0;
}