90分 第三个点WA
查看原帖
90分 第三个点WA
793142
anmengxun楼主2023/2/13 19:25
#include<iostream>
#include<iomanip>
#include<algorithm>
#include<cstring>
#include<string>
using namespace std;
long long a[1000100];
int erfen_ff(long long a,long long b[],int begin,int end)
{
	if (a <= b[0])
	{
		return 0;
	}//小于最小的 
	if (a >= b[end])
	{
		return end;
	}//大于最大的 
	int mid = (begin + end) / 2;
	if (b[mid] <= a && a <= b[mid + 1])
	{
		if ((a - b[mid]) <= (b[mid + 1] - a))
		{
			return mid;
		}
		else
		{
			return mid + 1;
		}
	}//mid <= 目标 <=(mid + 1),即找到目标了。 
	else
	{
		if (b[mid] < a)//?
		{
			mid++;
			return erfen_ff(a,b,mid,end);
		}
		if (a < b[mid])
		{
			mid--;
			return erfen_ff(a,b,begin,mid);
		}
	}
}
int main()
{
	int n;
	scanf("%d",&n);
	for (int i = 0;i < n;i++)
	{
		scanf("%d",&a[i]);
	}
	long long w;
	scanf("%d",&w);
	sort(a,a + n);
	int value = a[erfen_ff(w,a,0,n - 1)];
	int i = 0,tot = 0;
	while (value >= a[i])
	{
		value -= a[i];
		i++;
		tot++;
	}
	cout << tot;
	return 0;
} 
2023/2/13 19:25
加载中...