关于C的一个问题。(赛时A了
查看原帖
关于C的一个问题。(赛时A了
902351
Little_x_starTYJ楼主2024/8/3 21:46

这个代码为什么会TLE?

#include <bits/stdc++.h>
using namespace std;
#define int long long
int a[200010], n, m;
bool check(int k) {
	int ans = 0;
	for (int i = 1; i <= n; i++) {
		ans += min(a[i], k);
		if (ans > m)
			return false;
	}
	return true;
}
signed main() {
	ios::sync_with_stdio(false);
	ios_base::sync_with_stdio(false);
	cin.tie(0), cout.tie(0);
	cin >> n >> m;
	int sum = 0;
	for (int i = 1; i <= n; i++)
		cin >> a[i], sum += a[i];
	if (sum <= m) {
		cout << "infinite";
		return 0;
	}
	int l = 1, r = 2e14;
	while (l < r) {
		int mid = l + r >> 1;
		if (check(mid))
			l = mid;
		else
			r = mid - 1;
	}
	cout << l;
	return 0;
}
2024/8/3 21:46
加载中...