怎么也举不出反例啊...
而且最后一个数据点我输出的是1,expected 9
怎么想都不对啊
#include<iostream>
#include<cstring>
#include<algorithm>
using std::cin;
using std::cout;
const int N=18;
#define reint register int
int n,w,val[N],k,ans;
bool vis[N];
inline bool cmp(int a,int b)
{
return a>b;
}
int main()
{
std::ios::sync_with_stdio(false);
cin>>n>>w;
memset(vis,false,sizeof(vis));
for(reint i=1;i<=n;++i)
cin>>val[i];
std::sort(val+1,val+1+n,cmp);
for(reint i=1;i<=n;++i)
{
if(vis[i])continue;
++ans;
int nows=val[i];
for(reint j=i+1;j<=n;++j)
{
if(vis[j]||nows+val[j]>w)continue;
nows+=val[j];
vis[j]=true;
}
}
cout<<ans<<'\n';
return 0;
}