2007 NOIP 普及組 2.纪念品分组
/************************************************************/
#include<stdio.h>
#include<stdlib.h>
main()
{
int w,n,a,b,c;
while(scanf("%d %d",&w,&n)==2)
{
int ww[201]={0},temp[30000],flag=0,x,ans=0;
for(a=0;a<n;a++)
{
scanf("%d",&x);
ww[x]++;
}
for(a=0;a<201;a++) /*展開 這樣就不需要排序法了*/
{
if(ww[a]!=0)
{
for(b=0;b<ww[a];b++)
{
temp[flag]=a;
flag++;
}
}
}
for(a=0;a<n;a++)
{
if(temp[a]==-1) continue;
for(b=n-1;b>=0;b--)
{
if(temp[b]==-1) continue;
if(temp[a]+temp[b]<=w)/*順序跟下面的if 不可顛倒*/
{
ans++;
temp[b]=-1;
temp[a]=-1;
break;
}
if(temp[a]+temp[b]>w)
{
ans++;
temp[b]=-1;
}
}
}
printf("%d\n",ans);
}
return 0;
}