sicily 1483. 纪念品分组

#include<iostream> //贪心,每个分组尽量是两个纪念品的组合
#include<algorithm>
using namespace std;
int main()
{
int tag=0,n,w,p[30000];
while(cin>>w>>n)
{
if(tag)
cout
<<endl;
else
tag
=1;
for(int i=0;i<n;++i)
cin
>>p[i];
sort(p,p
+n);
int sum=n,s=0,t=n-1; //sum初始为n,表示每一组内只有一个纪念品
while(t>s)
{
if(p[t]+p[s]<=w) //如果最大和最小的纪念品可以组合成一组,则分组数减去 1
{
sum
--;
s
++;
}
t
--;
}
cout
<<sum<<endl;
}
return 0;
}

posted on 2011-07-05 02:05  sysu_mjc  阅读(310)  评论(0编辑  收藏  举报

导航