备考求助
查看原帖
备考求助
301793
源光楼主2020/9/21 23:18

二分准备写一道题的,没想到50分 QWQ

#include<iostream>
#include<string>
#include<algorithm>
#include<cstdio>
#include<cmath>
using namespace std;
long long n,m,g[1000005],ma;
long long KILL(long long t);
long long my_kill(long long t);
long long my_max(long long a,long long b);
long long ef(long long l,long long r,long long t){
	long long z,k;
	while(l<r){
		k=(l+r)/2;
		z=KILL(k);
		if(z==t)return k;
		else if(z<t)r=k;
		else l=k+1;
	}
	return k;
}
int main(){
	cin>>n>>m;
	for(int i=1;i<=n;i++){
		cin>>g[i];
		ma=my_max(ma,g[i]);
	}
	cout<<ef(1,ma,m);
	return 0;
}
long long my_max(long long a,long long b){
	if(a>b)return a;
	else return b;
}
long long KILL(long long t){
	long long ans=0;
	for(int i=1;i<=n;i++)ans+=my_kill(g[i]-t);
	return ans;
}
long long my_kill(long long t){
	if(t<0)return 0;
	else return t;
}

自己是蒙了

2020/9/21 23:18
加载中...