钓鱼2
2024年12月24日小于 1 分钟
#include <bits/stdc++.h>
#define int long long
using namespace std;
const int MAXN = 100000;
int n, T;
int x[MAXN + 5], a[MAXN + 5], b[MAXN + 5];
priority_queue<int> q;
signed main()
{
ios::sync_with_stdio(false);
cin.tie(0);
cin >> n >> T;
for (int i = 1; i <= n; i++)
x[i] = i;
for (int i = 1; i <= n; i++)
cin >> a[i];
for (int i = 1; i <= n; i++)
cin >> b[i];
// 枚举走到了第几个钓鱼点
int maxNow = 0;
int now = 0;
for (int i = 1; i <= n; i++)
{
while (a[i] > 0)
{
q.push(-a[i]);
now += a[i];
a[i] -= b[i];
}
while (q.size() > T - x[i] * 2)
{
now -= -q.top();
q.pop();
}
maxNow = max(maxNow, now);
cout << maxNow << " ";
}
return 0;
}