Description
现在有一群乘客要乘船。一条船最多能乘坐两个人,且乘客的总量不能超过帆船的最大承载量。请你设计程序尽可能减少花销,即找到安置所有旅客的最少帆船数。
Input
第一行两个整数w,n,80<=w<=200,1<=n<=300,w为一条帆船的最大承载量,n为人数。
第二行一组数据为每个人的重量,不大于船的最大承载量。
Output
每组人数所需要的最少帆船的条数。
Sample Input
85 6
5 84 85 80 84 83
Sample Output
5
Reference code
#include<stdio.h>
#include<stdlib.h>
int comp(const void*a,const void*b){
return *(int*)a-*(int*)b;
}
int main(){
int w,n;
scanf("%d%d",&w,&n);
int b=n,k=n-1,p[n];
for(int i=0;i<n;i++) scanf("%d",&p[i]);
qsort(p,n,sizeof(int),comp);
for(int i=0;i<k;i++)
for(int j=k;j>i;j--)
if(p[i]+p[j]<=w){
b--,k=j-1;
break;
}
printf("%d\n",b);
return 0;
}