Beautiful Paintings (CodeForces - 651B)(升序,下一行升序,共多少间隔)

                                                 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;
 } 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值