WA on #5,6,7 求调!
查看原帖
WA on #5,6,7 求调!
878013
_Supernova楼主2025/7/3 13:36

采用双指针求法。

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N = 100005;
int n;
ll m;
int f[N], s[N];
multiset <int> ms;
ll sum;
int ans = INT_MAX;
int main(void) {
	cin.tie(0), cout.tie(0);
	cin >> n >> m;
	for (int i = 1; i <= n; ++i) {
		cin >> f[i] >> s[i];
	}
	int l = 1, r = 0;
	while (l <= n) {
		while (r < n && sum < m) {
			++r;
			sum += (ll)f[r];
			ms.insert(s[r]);
		}
		if (sum < m) break;
		int maxs = *ms.rbegin();
		ans = min(ans, maxs);
		ms.erase(s[l]), sum -= (ll)f[l++];
	}
	cout << ans;
	return 0;
}
2025/7/3 13:36
加载中...