51nod 1432 独木舟
排序一下,(贪心思想)拿重的人去找能带走的最轻的人,能带走就带走,不能带走就自己走。
#include <iostream>
#include <stdio.h>
#include <string.h>
#include <algorithm>
#include <math.h>
#include <queue>
#include <stack>
#include <vector>
using namespace std;
#define INF 0x3f3f3f
#define pi acos(-1.0)
#define MAX 1000010
#define N 10510
int a[N];
int main()
{
int n,m;
scanf("%d%d",&n,&m);
for(int i = 0; i < n; i++)
scanf("%d",&a[i]);
sort(a,a+n);
int minn = 0,maxn = n-1;
int ans = 0;
while(1)
{
if(maxn == minn)
{
ans++;
break;
}
if(maxn < minn)
break;
if(a[maxn]+a[minn] <= m)
{
maxn--;
minn++;
ans++;
}
else
{
maxn--;
ans++;
}
}
printf("%d\n",ans);
}