10pts求调(阳历过
查看原帖
10pts求调(阳历过
681558
Weizhuo_Zhao楼主2024/5/22 17:20
#include<bits/stdc++.h>
using namespace std;
int main(){
	int w,n,a[30005]={};
	cin>>w>>n;
	for(int i=1;i<=n;i++){
		cin>>a[i];
	}
	sort(a+1,a+n+1);
	int ans=0,Min=1;
	for(int i=n;i>=1;i--){
		if(a[i]==0) continue;
		int k=Min;
		while(a[k]==0) k++;
		Min=k;
		for(int j=Min;j<=n;j++){
			if(a[i]+a[j]==w){
				ans++;
				a[i]=0;
				a[j]=0;
			}
			if(a[i]+a[j]>w){
				if(j==Min) continue;
				ans++;
				a[i-1]=0;
				a[j-1]=0;
				break;
			}
		}
	}
	for(int i=1;i<=n;i++)
		if(a[i]!=0) ans++;
	cout<<ans;
	return 0;
}
2024/5/22 17:20
加载中...