20pts求助 ~注释已写
查看原帖
20pts求助 ~注释已写
956316
77Glorious楼主2024/5/5 21:03
#include<bits/stdc++.h>
using namespace std;
int w,n,v[30010],ans;
int main()
{
	memset(v,1e9,sizeof(v));
	cin>>w>>n;//
	for(int i=1;i<=n;i++)
	{
		cin>>v[i];
	}
	sort(v+1,v+1+n);
	for(int i=n;i>=1;i--)//从最大的开始选 
	{
		for(int j=n-1;j>=0;j--)//递减往下选小的 
		{
			if(v[i]+v[j]>w)//超出了就选前一个 
			{
				if(v[i]+v[j-1]<=w)//超出的前一个可以放 
				{
					ans++; v[j-1]=1e9;//超出的前一个标记为分组过 
					break; 
				} 
			}
			
		}//j
	}
	cout<<ans;
	/*for(int i=1;i<=n;i++)
	{
		cout<<v[i]<<' ';
	}*/
}
2024/5/5 21:03
加载中...