12分求调
查看原帖
12分求调
602624
___njr___楼主2023/4/2 18:16
#include<bits/stdc++.h>
using namespace std;
int ASDFGHJKL;
vector<long double>df;
vector<int>a;
int one = 0;
int n, k;
template<typename Tp_ = int>
inline Tp_ read(Tp_& a = ASDFGHJKL) ;
enum struct ret {
	more,
	less,
	ok
};
struct R {
	long double ex;
	ret v;
};
inline R check(int l) {
	long double OT = one * l;
	R ans;
	if (OT >= k * 2 ) {
		ans.v = ret::more ;
		ans.ex = OT - 2 * k;
	} else if (OT < k) {
		ans.v = ret::less;
		ans.ex = k - OT;
	} else {
		ans.v = ret::ok;
		ans.ex = OT - k;
	}
}
inline int solve(int l, int r ) {
	int mid = (l + r) >> 1 ;
	R a = check(mid);
	if (a.v == ret::more) r = mid - 1;
	else if (a.v == ret::less) l = mid ;
	else return l ;
	return solve(l,r);
}
int main() {
	ios::sync_with_stdio(false);
	cin >> n >> k;
	long long al = 0;
	for (int i = 0 ; i < n ; ++i) {
		a.push_back(read());
		al += ASDFGHJKL;
	}
	long double O = al * 1L / k;
	for (int i = 0;  i < n ; ++i) {
		df.push_back(a[i] / O);
	}
	for (int i = 0 ; i < n ; ++i) {
		one += floor(df[i]);
	}
	cout << solve(1, ceil(al * 1L / one));
	return 0;
}
template<typename Tp_>
inline Tp_ read(Tp_& a) {
	cin >> a;
	return a;
}
2023/4/2 18:16
加载中...