首页 > 8-27阿里笔试第一题
头像
registerlover
发布于 2021-08-27 20:19
+ 关注

8-27阿里笔试第一题

哥哥们,我好难受呀。为什么我的思路才过了4%,完全找不到错误的原因呀。
求助
#include <bits/stdc++.h>
using namespace std;
vector<int>v;
bool solve(int k,int lim){//  寻找是否可以添加 k个数,仍然保持当前值为最大值。
      int sum=0;
      for(int i=0;i<v.size();i++){
          if(v[i]<lim){
		  sum=sum+(lim-v[i]);
	  }
      }
      return sum>=k; 
}
int main(){
    int m,n,temp;
     cin>>m>>n;
     //v.assign(m,0);
     for(int i=0;i<m;i++){
        cin>>temp;       
	v.push_back(temp);
     }
     sort(v.begin(),v.end());
     long long  l=0;
     long long  r=1e9;
     long long  ans=0;
     while(l<r){
           long long  mid=l+r>>1;
	   if(solve(n,mid)){// 枚举当前mid为最大值,当满足条件,就往右找最小的。
		   r=mid;
		   ans=mid;
	   }
	   else l=mid+1;
     }
     cout<<ans<<endl;
     system("pause");
     return 0;
}


全部评论

(6) 回帖
加载中...
话题 回帖

推荐话题

相关热帖

近期热帖

历年真题 真题热练榜 24小时
技术(软件)/信息技术类
查看全部

热门推荐