求调。
查看原帖
求调。
1403039
chyy11楼主2024/7/28 20:00
#include<iostream>
#include<algorithm>
using namespace std;

long long m,n;
long long l,h;
long long lenth[1000010]={0};

bool cmp(long long a,long long b){
	return a<b;
}

long long len(long long lenth[1000010],long long x){
	long long sum=0;
	for(int i=0;i<n;i++)
	{
		if(lenth[i]<=x)continue;
		else sum+=lenth[i]-x;
	}
	return sum;
}

int main()
{

	scanf("%lld %lld",&n,&m);
	for(int i=0;i<n;i++){
		scanf("%lld",&lenth[i]);
	}
	sort(lenth,lenth+n,cmp);
	l=0;h=lenth[n-1]+1;
	while(1){
		if(l+1==h){
			long long dl=len(lenth,l);
			printf("%lld",dl==m?l:h);
			break;
		}
		long long mid=(l+h)/2;
		long long d=len(lenth,mid);
		
		if(d==m){
			printf("%lld",mid);break;
	}
		else if(d>m)l=mid;
		else h=mid;
	}
	return 0;
}

两个样例结果都对 但是10分。。求大佬帮助

2024/7/28 20:00
加载中...