Twins

A. Twins
time limit per test
2 seconds
memory limit per test
256 megabytes
input
standard input
output
standard output

Imagine that you have a twin brother or sister. Having another person that looks exactly like you seems very unusual. It's hard to say if having something of an alter ego is good or bad. And if you do have a twin, then you very well know what it's like.

Now let's imagine a typical morning in your family. You haven't woken up yet, and Mom is already going to work. She has been so hasty that she has nearly forgotten to leave the two of her darling children some money to buy lunches in the school cafeteria. She fished in the purse and found some number of coins, or to be exact, n coins of arbitrary values a1, a2, ..., an. But as Mom was running out of time, she didn't split the coins for you two. So she scribbled a note asking you to split the money equally.

As you woke up, you found Mom's coins and read her note. "But why split the money equally?" — you thought. After all, your twin is sleeping and he won't know anything. So you decided to act like that: pick for yourself some subset of coins so that the sum of values of your coins is strictly larger than the sum of values of the remaining coins that your twin will have. However, you correctly thought that if you take too many coins, the twin will suspect the deception. So, you've decided to stick to the following strategy to avoid suspicions: you take the minimum number of coins, whose sum of values is strictly more than the sum of values of the remaining coins. On this basis, determine what minimum number of coins you need to take to divide them in the described manner.

Input

The first line contains integer n (1 ≤ n ≤ 100) — the number of coins. The second line contains a sequence of n integers a1a2, ..., an(1 ≤ ai ≤ 100) — the coins' values. All numbers are separated with spaces.

Output

In the single line print the single number — the minimum needed number of coins.

Examples
input
2
3 3
output
2
input
3
2 1 2
output
2
Note

In the first sample you will have to take 2 coins (you and your twin have sums equal to 6, 0 correspondingly). If you take 1 coin, you get sums 3, 3. If you take 0 coins, you get sums 0, 6. Those variants do not satisfy you as your sum should be strictly more that your twins' sum.

In the second sample one coin isn't enough for us, too. You can pick coins with values 1, 2 or 2, 2. In any case, the minimum number of coins equals 2.

这道题只要理解题目说的是什么意思就不难解决,这里要求输出的是:取出的钱比剩余的钱多的最小取硬币数目,就是找大的拿,直到手上的钱比剩余的多。

#include <stdio.h>
#define N 100
int main()
{
	int n,a[N];
	int j,m;
	scanf ("%d",&n);
	int i,sum=0,k;
	for (i=0;i<n;i++)
	{
		scanf ("%d",&a[i]);
		sum+=a[i];
	}
	for (i=0;i<n;i++)//对数组进行从小到大的排序 
	{
		k=i;
		for (j=i+1;j<n;j++)
		{
			if (a[k]>a[j])
			k=j;
		}
		if (k!=i)
		{
			m=a[i];
			a[i]=a[k];
			a[k]=m;
		}
	}
	int count=0,t=0; 
	for (i=n-1;sum>=2*count;i--)//判断拿走的是否比剩余的多 
	{
		count+=a[i];
		t++;
	}
	printf ("%d\n",t);
 } 


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值