题解
2023-08-25 09:35:55
发布于:广东
4阅读
0回复
0点赞
#include<bits/stdc++.h>
using namespace std;
const int maxn = 1e5+10;
int ans[maxn];
int ls[maxn];
int wc[maxn];
int sum[maxn];
int q[maxn],h[maxn];
struct node{
int wc,ans;
bool operator <(const node &a)const{
return ans>a.ans;
}
}tmd[maxn];
int main(){
int n;
cin>>n;
for(int i=1;i<=n;i++){
cin>>tmd[i].wc;
}
for(int i=1;i<=n;i++){
int z;
cin>>tmd[i].ans;
}
sort(tmd+1,tmd+1+n);
for(int i=1;i<=n;i++){
sum[i]=sum[i-1]+tmd[i].ans;
}
for(int i=1;i<=n;i++)q[i]=max(q[i-1],2*tmd[i].wc);
for(int i=n;i>=1;i--)h[i]=max(h[i+1],2*tmd[i].wc+tmd[i].ans);
for(int i=1;i<=n;i++) cout<<max(sum[i]+q[i],sum[i-1]+h[i])<<endl;
return 0;
}
这里空空如也
有帮助,赞一个