40分c语言求助
查看原帖
40分c语言求助
1159688
zdxd楼主2023/12/13 17:31
#include<stdio.h>
#include<stdlib.h>
long long n,m;
int a[2000002];
int cmp(const void*a,const void*b)
{
	return *(int*)a-*(int*)b;
}
int main()
{
	long long i,l=1,r=a[n],mid,sum=0;
	scanf("%lld%lld",&n,&m);
	for(i=1;i<=n;i++)
	{
		scanf("%d",&a[i]);
	} 
	qsort(a+1,n,sizeof(int),cmp);
	/*for(i=1;i<=n;i++)
	{
		printf("%d  ",a[i]);
	}*/
	l=0;
	r=a[n];	
	while(l<r)
	{
		mid=l+(r-l)/2;
		sum=0;
		for(i=1;i<=n;i++)
		{
			if(a[i]>mid)
			{
				sum=sum+a[i]-mid;
			}
		}
		//printf("%ld  %ld  %ld\n",l,r,mid);
		if(sum==m)
		{
			break;
		}
		else if(sum<m)
		{
			r=mid-1;
		}	
		else if(sum>m)
		{
			l=mid+1;
		}
	}
	printf("%lld",mid);
	return 0;
 } 
2023/12/13 17:31
加载中...