2 条题解

  • 0
    @ 2023-2-24 20:21:42
    using namespace std;
    long long int o[1000002],a,b,minn=0,maxx=1000000,mid=500,e=0;
    int main()
    {
    	cin>>a>>b;
    	for (int i=0;i<a;i++)
    	cin>>o[i];
    	while (minn<maxx)
    	{
    		for (int i=0;i<a;i++)
    		if (o[i]>mid)
    		e+=o[i]-mid;
    		if (e>=b)
    		minn=mid;
    		else maxx=mid-1;
    		mid=(maxx+minn)/2+1;
    		e=0;
    	}
    	cout<<mid-1;
    	return 0;
    }
    
    • 0
      @ 2023-2-24 19:27:51
      #include<bits/stdc++.h>
      using namespace std;
      typedef long long ll;
      ll h[1000010],n,m,max1;
      ll check(ll x)
      {
      	ll ans=0;
      	for(int i=1;i<=n;i++)
      	{
      		if(h[i]>x)
      		{
      			ans=ans-x+h[i];
      		}
      	}
      	return ans;
      }
      int main()
      {
      	scanf("%d%d",&n,&m);
      	for(int i=1;i<=n;i++)
      	{
      		scanf("%d",&h[i]);
      		if(h[i]>max1) max1=h[i];
      	}
      	ll l=1,r=max1;
      	while(l<=r)
      	{
      		ll mid=(l+r)/2,q=check(mid);
      		if(q<m) r=mid-1;
      		else l=mid+1;
      	}
      	printf("%d",r);
      	return 0;
      }
      
      • 1

      信息

      ID
      439
      时间
      1000ms
      内存
      256MiB
      难度
      8
      标签
      递交数
      92
      已通过
      17
      上传者