求洛谷基础赛D
  • 板块学术版
  • 楼主SilverLi
  • 当前回复15
  • 已保存回复15
  • 发布时间2023/8/12 18:00
  • 上次更新2023/11/3 04:14:46
查看原帖
求洛谷基础赛D
688783
SilverLi楼主2023/8/12 18:00
#include <iostream>
#include <algorithm>
#define int long long
using namespace std;
const int N = 1e6 + 5;
int n, m, ans;
int a[N], b[N], sum[N];
inline bool check(int x) {
	for (int i = 1; i <= n; ++i) {
		int res = 0;
		for (int j = 1; j <= m; ++j)
			res += max(0ll, x - abs(b[j] - i));
		if (res < a[i]) return 0;
	}
	return 1;
}
signed main() {
	cin >> n >> m;
	for (int i = 1; i <= n; ++i)
		cin >> a[i];
	for (int i = 1; i <= m; ++i)
		cin >> b[i];
	for (int i = 1; i <= m; ++i)
		sum[i] = sum[i - 1] + b[i];
	int l = 0, r = 1e10;
	while (l <= r) {
		int mid = l + r >> 1ll;
		if (check(mid)) {
			ans = mid;
			r = mid - 1;
		}
		else
			l = mid + 1;
	}
	cout << ans;
	return 0;
}

求怎么优化QwQ

2023/8/12 18:00
加载中...