求助一个小问题
查看原帖
求助一个小问题
254321
胡萝卜兔楼主2020/12/23 15:51

看了一下题解,感觉和题解唯一的差别是我在找到的时候直接输出答案了,就是if(tot==mid)那个语句,按照题解把tot>=mid放到一起就过了,想问一下大家问题出在哪里? 代码如下

#include <iostream>
#include <cstdio>
#include <algorithm> 
using namespace std;
typedef long long ll;
const int size=1000005;
ll n,m,a[size];
int main()
{
	cin>>n>>m;
	for(int i=0;i<n;i=i+1)
	{
		cin>>a[i];
	}
	sort(a,a+n);
	ll left=a[0];
	ll right=a[n-1],mid,tot=0;
	while(left<=right)
	{
		
		mid=(left+right)/2;
		for(int i=0;i<n;i=i+1)
		{
			if(a[i]<=mid)
				continue;
			else
			{
				tot+=a[i]-mid;
			}
		}
		if(tot==m)
		{
			cout<<mid;
			return 0;
		}
		if(tot<m)
			right=mid-1;
		if(tot>m)
			left=mid+1;
		tot=0;
	}
}

这份代码wa了9个点。。

2020/12/23 15:51
加载中...