只不过是个贪心
应该降绿/黄
代码:
#include<bits/stdc++.h>
using namespace std;
struct node
{
int dis, a;
};
node arr[100005];
int DisMax[100005];
int ans[100005];
int sum[100005];
int N;
bool cmp(node a, node b)
{
return a.a > b.a;
}
int main() {
cin >> N;
for (int i = 1; i <= N; i++) cin >> arr[i].dis;
for (int i = 1; i <= N; i++) cin >> arr[i].a;
sort(arr + 1, arr + N + 1, cmp);
for (int i = 1; i <= N; i++) sum[i] = sum[i - 1] + arr[i].a;
for (int i = 1; i <= N; i++) DisMax[i] = max(DisMax[i - 1], arr[i].dis * 2);
for (int i = N; i >= 1; i--) ans[i] = max(ans[i + 1], arr[i].dis * 2 + arr[i].a);
for (int i = 1; i <= N; i++) cout << max(sum[i] + DisMax[i], sum[i - 1] + ans[i]) << '\n';
return 0;
}