样例没过!
查看原帖
样例没过!
757946
gaolangwen_is_sb楼主2023/5/3 19:28

求助大佬!悬赏关注(小号大号一起关)!

#include<bits/stdc++.h>
using namespace std;
#define int long long

int n,k,zero_num;
priority_queue<int,vector<int>,greater<int> >nat;
priority_queue<int>neg;

signed main()
{
	cin>>n>>k;
	k=pow(2,k-1);
	for(int i=1;i<=n;i++)
	{
		int x;
		cin>>x;
		if(x>0)
			nat.push(x);
		else if(x==0)
			zero_num++;
		else
			neg.push(x);
	}
	int sum=0;
	for(int i=1; ;i++)
	{
		if(!nat.empty()&&!neg.empty())
		{
			int z=nat.top(),f=neg.top();
			if(sum+z<k)
			{
				sum+=z;
				nat.pop();
			}
			else if(sum+f>=k)
			{
				sum+=f;
				neg.pop();
			}
			else
			{
				cout<<i-1+zero_num;
				break;
			}
		}
		else if(!nat.empty()&&neg.empty())
		{
			sum+=nat.top();
			nat.pop();
			if(sum>=k)
			{
				cout<<i-1+zero_num;
				break;
			}
		}
		else if(nat.empty()&&!neg.empty())
		{
			sum+=neg.top();
			neg.pop();
			if(sum<k)
			{
				cout<<i-1+zero_num;
				break;
			}
		}
		else if(nat.empty()&&neg.empty())
		{
			cout<<n;
			break;
		}
	}
	return 0;
}
2023/5/3 19:28
加载中...