10分
查看原帖
10分
803885
_8008008楼主2023/2/14 19:44
#include<iostream>
using namespace std;
int main(){
	int w,n,a[30000],ans=0;
	cin>>w>>n;
	for(int i=0;i<n;i++)cin>>a[i];
	for(int i=0;i<n;i++){if(a[i]==w){a[i]=0,ans++;}for(int j=i+1;j<n;j++)if(a[i]+a[j]==w&&a[i]!=0){a[i]=0,a[j]=0,ans++;}}
	int best=9999,best_num=10000000;
	for(int i=0;i<n;i++){
		if(a[i]!=0){
			for(int j=i+1;j<n;j++){
				if(best>w-a[i]-a[j]&&w-a[i]-a[j]>0&&a[j]!=0){
					best_num=j;
					best=w-a[i]-a[j];
				}
			}
		}
		if(a[i]!=0)
		if(best_num==10000000)a[i]=0,ans++;
		else a[i]=0,a[best_num]=0,ans++;
	}
	cout<<ans;
	return 0;
}
2023/2/14 19:44
加载中...