求助代码(解答就关注)
查看原帖
求助代码(解答就关注)
377794
Level_1024楼主2021/3/28 21:14
#include<cstdio>
#include<iostream>
#include<algorithm>
using namespace std;
int n,k,l,r,now,biggest=-2e9,a;
int forest[1000002];
short check(int now)
{
	int ans=0;
	for(int i=1;i<=n;i++)
	{
		ans+=(forest[i]-now);
	}
	if(ans>k)
	{
		return 1;
	}
	if(ans==k)
	{
		return 0;
	}
	if(ans<k)
	{
		return -1;
	}
}
int main()
{
	cin>>n>>k;
	for(int i=1;i<=n;i++)
	{
		cin>>forest[i];
		if(biggest<forest[i])
		{
			biggest=forest[i];
		}
	}
	l=1;
	r=biggest;
	now=(l+r)/2;
	a=check(now);
	for(int i=1;i<=1e4;i++)
	{
		a=check(now);
		if(a==1)
		{
			l=now+1;
			now=(l+r)/2;
		}
		if(a==0)
		{
			cout<<now;
			break;
		}
		if(a==-1)
		{
			r=now-1;
			now=(l+r)/2;
		}
	}
	return 0;
}

没输出是怎么回事??

2021/3/28 21:14
加载中...