P1873 40分求救
查看原帖
P1873 40分求救
1116014
shimucheng楼主2024/7/20 15:44

代码:

#include<bits/stdc++.h>
#include<iostream>
#include<cstring>
#include<algorithm>
using namespace std;
const int M=6e5+10;
long long n,m,a[M],b[M],mid; 
bool check(long long h){
	int ans=0;
	for(long long i=0;i<n;i++) if(a[i]>=h) ans+=a[i]-h;
	if(ans>=m) return true;
	else return false;
}
int main(){
	cin>>n>>m;
	for(long long i=0;i<n;i++) scanf("%ld",&a[i]);
	//二分答案 
	long long l=0,r=2e9+1;
	while (l+1<r){
		mid=l+(r-l)/2;
		if(check (mid)) l=mid;
		else r=mid;
	}
	printf("%ld",mid) ;
	return 0;
} 

没过样例,但40分,求大佬改正。

2024/7/20 15:44
加载中...