一支独木

n个人,已知每个人体重。独木舟承重固定,每只独木舟最多坐两个人,可以坐一个人或者两个人。显然要求总重量不超过独木舟承重,假设每个人体重也不超过独木舟承重,问最少需要几只独木舟? 

Input

第一行包含两个正整数n (0 接下来n行,每行一个正整数,表示每个人的体重。体重不超过1000000000,并且每个人的体重不超过m。

Output

一行一个整数表示最少需要的独木舟数。

Sample Input

3 6
1
2
3

Sample Output

2
#include<stdio.h>
#include<algorithm>
#define maxn 100005
using namespace std;
//bool cmp(int a,int b)
//{
//	return a>b;
//}
int ctn,a[maxn];
int main()
{
	int n,m,i;
	
	ctn=0;
	scanf("%d%d",&n,&m);
	for(i=0;i<n;i++)
	{
		scanf("%d",&a[i]);
	}
	sort(a,a+n);
	int b=0;
	int l=n-1;
	while(b<=l)
	{
		if(a[b]+a[l]>m) {
			l--;ctn++;
		}
		else {
			b++;l--;ctn++;
		}
	}
	printf("%d",ctn);
	return 0;
}

猜你喜欢

转载自blog.csdn.net/aimNO_1/article/details/81364933
今日推荐