22分求助
查看原帖
22分求助
583186
2c_s楼主2023/4/11 06:44

#14 #15 #16 AC,其余全WA

#include<bits/stdc++.h>
using namespace std;
int n,k,x,sum,cnt;
multiset<int>st;
int main(){
	cin>>n>>k;
	k=pow(2,k-1);
	for(int i=1;i<=n;++i){
		scanf("%d",&x);
		st.insert(x);
	}
	while(1){
		if(sum>=0){
			auto p=st.upper_bound(-sum*2);
			if(p==st.end())break;
			++p;
			sum+=*p;
			if(sum>=k||sum<-k)break;
			st.erase(p);
			++cnt;
		}
		else{
			auto p=st.lower_bound(-sum*2);
			if(p==st.end())break;
			sum+=*p;
			if(sum>=k||sum<-k)break;
			st.erase(p);
			++cnt;
		}
	}
	cout<<cnt;
	return 0;
}
2023/4/11 06:44
加载中...