考虑最轻的人和最重的人是否可以在一条船上,如果最轻的和其他人的人都不能在一条船上,则每个人都需要一条船
#include<algorithm>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<cstdlib>
#include<iostream>
#include<iomanip>
#include<list>
#include<queue>
#include<sstream>
#include<stack>
#include<string>
#include<set>
#include<vector>
using namespace std;
#define PI acos(-1.0)
#define EPS 1e-8
#define MOD 1e9+7
#define LL long long
#define ULL unsigned long long //1844674407370955161
#define INT_INF 0x7f7f7f7f //2139062143
#define LL_INF 0x7f7f7f7f7f7f7f7f //9187201950435737471
const int dr[]= {0, 0, -1, 1, -1, -1, 1, 1};
const int dc[]= {-1, 1, 0, 0, -1, 1, -1, 1};
const int maxn=100;
int v[maxn];
int main()
{
int n,c;
scanf("%d%d",&n,&c);
for(int i=1; i<=n; i++)
scanf("%d",&v[i]);
sort(v+1,v+n+1);
int i=1,j=n;
int sum=0;
for(i=1; i<=j;)
{
if(i==j)
{
sum++;
break;
}
else if(v[i]+v[j]>c)
{
sum++;
j--;
}
else
{
i++,j--;
sum++;
}
}
printf("%d\n",sum);
return 0;
}