4个点re了,也开了longlong,也没超复杂度啊,ki了怪了
查看原帖
4个点re了,也开了longlong,也没超复杂度啊,ki了怪了
704679
mrHCT楼主2023/3/27 20:07
#include<iostream>
#include<algorithm>
using namespace std;
long long  n,h;
long long a[100010];
long long b[100010];
long long flag;
long long cnt;
long long sum;
long long j=0;
int main()
{
	cin>>n>>h;
	for(int i=0;i<n;i++)cin>>a[i];
	sort(a,a+n);
	for(int i=0;i<n;i++)b[i]=a[i+1]-a[i];
	b[n-1]=0;
	//for(int i=0;i<n;i++)cout<<b[i]<<" ";
	
	for(int i=n-1;i>=0;i--)
	{
		sum+=j*b[i];//累计砍了多少材料
		//cout<<sum<<" ";
		j++;
		if(sum==h)
		{
			flag=i;
			break;
		}
		else if(sum>h)
		{
			flag=i;
			cnt=(sum-h)/(n-i-1);
			break;
		}
	}
	cout<<a[flag]+cnt;
	
	return 0;
}
2023/3/27 20:07
加载中...