2 solutions

  • 3
    @ 2024-2-28 17:00:51

    Nan, 真 De Nan

    #include<iostream>
    #define int long long
    using namespace std;
    int n,M,N;
    int a[1000000];// ...
    bool ch(int m)//检测是否大于所需要的树木
    {
    	int s=0;
    	for(int i=0;i<n;i++)
    	{
    		if(m<a[i])
    		{
    			s+=a[i]-m;
    		}
    	}
    	return s<M;
    }
    signed main()//用了define
    {
    	cin>>n>>M;//输入
    	for(int i=0;i<n;i++)
    		cin>>a[i];//输入
    	int l=0,r=0,m;//左,右,中
    	for(int i=0;i<n;i++)
    	{
    		r=max(a[i],r);//最高的
    	}
    	while(l<=r)//边界
    	{
    		m=(l+r)>>1;//一半(中分,下面有彩蛋)
    		if(ch(m))//这里是检测 不 符合要求的
    		{
    			r=m-1;//右边缩半
    		}
    		else
    		{
    			l=m+1;//左边缩半(符合要求)
    		}
    	}
    	cout<<l-1;//输出
    	return 0;//完结散花
    }
    

    思路简单

    死鹿剑弹

    歹马易写

    代码爆炸

    红军长征Nan

    信奥代码Nan

    ikun  __--/\--__
        /-/        \-\
       /  |   答   |  \
          \________/ 
     mmmmmmmmmmmmmmmmmmmm
    mmmmmmmm mmmm mmmmmmmm
    mm    mm mmmm mm    mm
    mm    mm mmmm mm    mm
    mm    mm mmmm mm    mm
    mm    mm mmmm mm    mm
    mm    mm mmmm mm    mm篮球
          mmmm  mmmm
          mmmm  mmmm
          mmmm  mmmm
          mmmm  mmmm
          mmmm  mmmm
    
    • -5
      @ 2024-4-13 14:58:09

      from 课件

      #include <bits/stdc++.h>
      using namespace std;
      int main(){
      const int MAX_N= 1e6+5;
      int tree[MAX_N],n,m;
      cin>>n>>m;
      for(int i=1;i<=n;i++){
      cin>>tree[i];	
      }
      sort(tree+1,tree+n+1);
      long long sum=0;
      int idx=n;
      while(sum<m){
      sum+=(long long)(tree[idx]-tree[idx-1])*(n-idx+1);
      idx--;
      }
      idx++;
      int itn=tree[idx-1]+(int)((sum-m)/(n-idx+1));
      cout<<itn;
      }
      
      
      
      • 1

      Information

      ID
      998
      Time
      1000ms
      Memory
      125MiB
      Difficulty
      8
      Tags
      # Submissions
      223
      Accepted
      31
      Uploaded By